Telegram бот-словарик на Python. Как сделать так, чтобы пользователь мог сам добавлять слова и их определения?
Создал Telegram бот-словарик на Python через BotFather.
Использовал библиотеку pyTelegramBotAPI.
Пользователь вводит слово, если оно есть в коде, то он получает определение слова. Как сделать так, чтобы пользователь мог сам добавить слово и определение к нему?
from telebot import TeleBot, types
bot = TeleBot(token='Вставьте_свой_токен', parse_mode='html') # создание бота
DEFINITOINS = { }
@bot.message_handler(commands=['start'])
def start_command_handler(message: types.Message):
bot.send_message(
chat_id=message.chat.id, # id чата, в который необходимо направить сообщение
text='Привет! Подскажу определения слов из сферы тестирования ?\n'
'Введите интересующий вас термин, например, баг')
@bot.message_handler()
def message_handler(message: types.Message):
definition = DEFINITOINS.get(message.text.lower())
bot.send_message(
chat_id=message.chat.id,
text='? Я пока не знаю такого определения')
# выходим из функции
return
# если ключевая фраза была найдена, формируем текст сообщения и отправляем его
# если перед строкой поставить букву f, то в фигурных скобках
# {} можно использовать переменные :)
bot.send_message(
chat_id=message.chat.id,
text=f'Определение:\n<code>{definition}</code>')
bot.send_message(
chat_id=message.chat.id,
text='Введите другой термин')
Ответы (1 шт):
Автор решения: Яков Байдук
→ Ссылка
Необходимо сначала сделать проверку на то, есть ли текст написанный пользователем в словаре.
if message.text.lower() in DEFINITIONS:
Затем, если определение уже есть в словаре, мы выводим пользователю перевод. Если же его нет, мы просто добавляем в словарь новую пару ключ/значение в формате:
DEFINITIONS['новый_ключ'] = 'новое_значение'
Вот небольшой пример консольного приложения:
definitions = {}
request = input('Введите запрос ')
if request in definitions:
translation = definitions[request]
print('Определение: ' + translation)
else:
newTranslation = input('Определение не найдено. Введите его ')
definitions[request] = newTranslation