Питоном по телеграму! Пишем пять простых Telegram-ботов на Python - «Новости» » Интернет технологии
sitename
Как заработать денег, не выходя из дома, мы вам поможем с этим разобраться » Самоучитель CSS » Отступы и поля » Питоном по телеграму! Пишем пять простых Telegram-ботов на Python - «Новости»

www


При соз­дании сле­дующих ботов мы будем исполь­зовать нес­коль­ко тек­сто­вых фай­лов с кон­тентом. Ска­чать их мож­но с моего сай­та.



 

Бот с двумя виртуальными кнопками


Во мно­гих Telegram-ботах для выбора каких‑то дей­ствий исполь­зуют­ся так называ­емые вир­туаль­ные кноп­ки. Давай поп­робу­ем сде­лать себе такие же!


Пред­положим, что у нас есть два фай­ла facts.txt и thinks.txt, которые содер­жат спи­сок инте­рес­ных фак­тов и поговор­ки. На каж­дой стро­ке фай­лов находит­ся по одно­му фак­ту или поговор­ке.


Сде­лаем бота, в котором будут две кноп­ки: «Фак­ты» и «Поговор­ки». Если нажать любую, бот отпра­вит поль­зовате­лю соот­ветс­тву­ющее сооб­щение.



info


Ес­ли ты будешь исполь­зовать для это­го бота тот же токен, что и для пре­дыду­щего, то, что­бы уви­деть кноп­ки, переза­пус­ти бота коман­дой /start.



import randomfrom telebot import types# Загружаем список интересных фактовf = open('data/facts.txt', 'r', encoding='UTF-8')facts = f.read().split('n')f.close()# Загружаем список поговорокf = open('data/thinks.txt', 'r', encoding='UTF-8')thinks = f.read().split('n')f.close()# Создаем ботаbot = telebot.TeleBot('Здесь твой токен, полученный от @botfather')# Команда start@bot.message_handler(commands=["start"])def start(m, res=False):# Добавляем две кнопкиmarkup=types.ReplyKeyboardMarkup(resize_keyboard=True)item1=types.KeyboardButton("Факт")item2=types.KeyboardButton("Поговорка")markup.add(item1)markup.add(item2)bot.send_message(m.chat.id, 'Нажми:nФакт для получения интересного фактаnПоговорка для получения мудрой цитаты ', reply_markup=markup)# Получение сообщений от юзера@bot.message_handler(content_types=["text"])def handle_text(message):
# Если юзер прислал 1, выдаем ему случайный факт
if message.text.strip() == 'Факт' :answer = random.choice(facts)
# Если юзер прислал 2, выдаем умную мысль
elif message.text.strip() == 'Поговорка':answer = random.choice(thinks)
# Отсылаем юзеру сообщение в его чат
bot.send_message(message.chat.id, answer)# Запускаем ботаbot.polling(none_stop=True, interval=0)
Питоном по телеграму! Пишем пять простых Telegram-ботов на Python - «Новости»
При­мер работы бота, зна­юще­го фак­ты и поговор­ки 

Бот, ведущий Telegram-канал с анекдотами


Пре­дыду­щие боты посыла­ли юзе­ру сооб­щения тог­да, ког­да получа­ли от него коман­ды или фра­зы. Но что, если нам нужен бот, который будет пери­оди­чес­ки и в авто­мати­чес­ком режиме пос­тить что‑то в наш канал?


Да­вай сде­лаем бота, который получа­ет спи­сок анек­дотов из фай­ла и каж­дый час пос­тит в канал один из этих анек­дотов. Для это­го нам нуж­но соз­дать свой канал в Telegram, добавить в под­писчи­ки канала нашего бота и наз­начить его адми­нис­тра­тором канала с пра­вом пуб­ликовать сооб­щения.


Файл с анек­дотами дол­жен лежать в пап­ке data рядом со скрип­том бота.


import time# Токен, который выдает @botfatherbot = telebot.TeleBot('Здесь твой токен, полученный от @botfather')# Адрес телеграм-канала, начинается с @CHANNEL_NAME = '@адрес_твоего_канала'# Загружаем список шутокf = open('data/fun.txt', 'r', encoding='UTF-8')jokes = f.read().split('n')f.close()# Пока не закончатся шутки, посылаем их в каналfor joke in jokes:
bot.send_message(CHANNEL_NAME, joke)
# Делаем паузу в один час
time.sleep(3600)bot.send_message(CHANNEL_NAME, "Анекдоты закончились :-(")
При­мер работы бота, ведуще­го канал с анек­дотами 

Чат-бот «Маша»


Те­перь давай сде­лаем прос­тей­шего чат‑бота, который будет бол­тать с поль­зовате­лем. Для это­го мы под­готовим файл boltun.txt, содер­жащий стро­ки с воп­росами (в начале таких строк пос­тавим мет­ку u:) и отве­тами на них в сле­дующей стро­ке.


u: как зовут
Маша меня зовут!
u: сколько тебе лет
Мне уже 18, честно-честно!

Файл boltun.txt помес­тим в пап­ку data рядом со скрип­том бота. Для поис­ка похожих воп­росов исполь­зуем модуль fuzzywuzzy, который поз­воля­ет срав­нивать, нас­коль­ко похожи меж­ду собой две стро­ки. Естес­твен­но, спер­ва этот модуль нуж­но уста­новить:


pip install fuzzywuzzy
pip install python-Levenshtein

Ни­же при­веден исходный код бота. Пос­ле его запус­ка напиши боту «При­вет» и поп­робуй с ним пооб­щать­ся. Естес­твен­но, это не искусс­твен­ный интеллект и набор его отве­тов огра­ничен фра­зами из фай­ла boltun.txt.


import osfrom fuzzywuzzy import fuzz# Создаем бота, пишем свой токенbot = telebot.TeleBot('Здесь твой токен, полученный от @botfather')# Загружаем список фраз и ответов в массивmas=[]if os.path.exists('data/boltun.txt'):
f=open('data/boltun.txt', 'r', encoding='UTF-8')
for x in f:if(len(x.strip()) 2):mas.append(x.strip().lower())
f.close()# С помощью fuzzywuzzy вычисляем наиболее похожую фразу и выдаем в качестве ответа следующий элемент спискаdef answer(text):
try:text=text.lower().strip()if os.path.exists('data/boltun.txt'):a = 0n = 0nn = 0for q in mas:if('u: ' in q):# С помощью fuzzywuzzy получаем, насколько похожи две строкиaa=(fuzz.token_sort_ratio(q.replace('u: ',''), text))if(aa a and aa!= a):a = aann = nn = n + 1s = mas[nn + 1]return selse:return 'Ошибка'
except:return 'Ошибка'# Команда «Старт»@bot.message_handler(commands=["start"])def start(m, res=False):bot.send_message(m.chat.id, на связи. Напиши мне Привет )')# Получение сообщений от юзера@bot.message_handler(content_types=["text"])def handle_text(message):
# Запись логов
f=open('data/' + str(message.chat.id) + '_log.txt', 'a', encoding='UTF-8')
s=answer(message.text)
f.write('u: ' + message.text + 'n' + s +'n')
f.close()
# Отправка ответа
bot.send_message(message.chat.id, s)# Запускаем ботаbot.polling(none_stop=True, interval=0)
При­мер работы чат‑бота 

Выводы


Мы написа­ли пять прос­тых ботов, на при­мере которых научи­лись при­нимать и отправ­лять сооб­щения, делать кноп­ки и понимать неточ­ные зап­росы.


В сле­дующей статье мы рас­смот­рим работу с Telegram-ботами более под­робно: научим­ся делать ботов, работа­ющих через веб‑хуки, при­нимать опла­ту от поль­зовате­лей и вза­имо­дей­ство­вать с базой дан­ных SQLite.


Так­же при­зываю тебя не откла­дывать и записы­вать­ся на курс «Python для нович­ков», где мы от прос­тей­ших понятий перей­дем к соз­данию пер­вых инте­рес­ных про­ектов. Стар­туем уже сов­сем ско­ро!



Курс по Python


Курс «Python с нуля» нап­равлен на изу­чение основ и базовых кон­цепций прог­рамми­рова­ния. Пос­ле него ты смо­жешь лег­ко углу­бить­ся в любую из ИТ‑сфер: веб‑раз­работ­ку, ана­лиз дан­ных, безопас­ность при­ложе­ний и так далее. Про­дол­житель­ность кур­са — два кален­дарных месяца. Уро­ки будут про­водить­ся два раза в неделю (втор­ник и чет­верг, ори­енти­ровоч­но в 17:00 по Мос­кве), каж­дый по одно­му ака­деми­чес­кому часу. Пери­оди­чес­ки будут выдавать­ся домаш­ние задания.


За­писать­ся на курс


CSS
запостил(а)
Turner
Вернуться назад

Смотрите также

А что там на главной? )))



Комментарии )))



Комментарии для сайта Cackle
Войти через: