@Georgy123

Как сделать так ,чтобы бот отвечал на сообщения фразами из массива?

from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
phrases={"привет":"привет","как дела?":"хорошо,а у тебя?","хорошо":"ну и здорово!","плохо":"взбодрись"}

def get_answer(key,phrases):
return phrases.get(key)

def start(bot,update):
print("Вызван/start")
bot.sendMessage(update.message.chat_id, text='Привет.')

def talk_to_me(bot,update):
print('Получено сообщение: %s' % update.message.text)
key=input(":")
bot.sendMessage(update.message.chat_id, text=update.message.get_answer(key,phrases))



def bot_work():
updater=Updater("286223894:AAFR57Bru4f7xEcEBTQ4Q12pVw8SJXM0uU8")


dp=updater.dispatcher
dp.add_handler(CommandHandler('start',start))
dp.add_handler(MessageHandler([Filters.text], talk_to_me))

updater.start_polling()
updater.idle()

if __name__==("__main__"):
bot_work()

Причем,чтобы отвечал только использую функцию get_answer.Буду очень благодарен.

P.S. Бот для telegram.Функция get_answer может быть изменена.Еще раз спасибо
  • Вопрос задан
  • 992 просмотра
Решения вопроса 1
@YO_N

def hello_answer(bot,update):
bot.sendMessage(update.message.chat_id, text = "%s" % get_answer(update.message.text))

def get_answer(ask, answers = phrases):
ask = ask.lower()
ask = ask.strip()
ask = re.sub('\W*$','',ask)
if answers.get(ask) == None:
return 'Не понял...'
else:
return answers.get(ask)

Отступы, я думаю, сам поставишь, где нужно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@BogBel
для того что бы выбрать случайный элемент массива используйте
import random
data = ['answ1', 'answ2', 'answ3', 'answ4', 'answ5']
>>>random.choice(data)
answ1
>>>random.choice(data)
answ4
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы