Питоном по телеграму! Пишем пять простых Telegram-ботов на Python - «Новости» » Интернет технологии
sitename
«Ростех» начал поставки серверов и обновлённого интерконнекта «Ангара» для отечественных суперкомпьютеров / ServerNews - «Новости сети»
«Ростех» начал поставки серверов и обновлённого интерконнекта «Ангара» для отечественных суперкомпьютеров / ServerNews - «Новости сети»
Открыто, входите: более 80 тыс. межсетевых экранов Palo Alto Networks содержат критическую уязвимость нулевого дня / ServerNews - «Новости сети»
Открыто, входите: более 80 тыс. межсетевых экранов Palo Alto Networks содержат критическую уязвимость нулевого дня / ServerNews - «Новости сети»
Петабайт на колёсиках: Fujifilm выпустила автономное ленточное хранилище Kangaroo / ServerNews - «Новости сети»
Петабайт на колёсиках: Fujifilm выпустила автономное ленточное хранилище Kangaroo / ServerNews - «Новости сети»
Бизнес по созданию тематического каталога. - «Заработок в интернете»
Бизнес по созданию тематического каталога. - «Заработок в интернете»
Как заработать в Орифлейм через интернет? - «Заработок в интернете»
Как заработать в Орифлейм через интернет? - «Заработок в интернете»
Социальные закладки интернета для увеличения посещаемости. - «Заработок в интернете»
Социальные закладки интернета для увеличения посещаемости. - «Заработок в интернете»
Как больше получить денег за отзывы. - «Заработок в интернете»
Как больше получить денег за отзывы. - «Заработок в интернете»
Как заработать на партнерке от интернет — магазина подарков - «Заработок в интернете»
Как заработать на партнерке от интернет — магазина подарков - «Заработок в интернете»
Microsoft патчит 150 уязвимостей, включая две 0-day - «Новости»
Microsoft патчит 150 уязвимостей, включая две 0-day - «Новости»
Через репозитории на GitHub распространяется малварь Keyzetsu - «Новости»
Через репозитории на GitHub распространяется малварь Keyzetsu - «Новости»
Как заработать денег, не выходя из дома, мы вам поможем с этим разобраться » Самоучитель 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 по Мос­кве), каж­дый по одно­му ака­деми­чес­кому часу. Пери­оди­чес­ки будут выдавать­ся домаш­ние задания.


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



www При соз­дании сле­дующих ботов мы будем исполь­зовать нес­коль­ко тек­сто­вых фай­лов с кон­тентом. Ска­чать их мож­но с моего сай­та. Бот с двумя виртуальными кнопками Во мно­гих Telegram-ботах для выбора каких‑то дей­ствий исполь­зуют­ся так называ­емые вир­туаль­ные кноп­ки. Давай поп­робу­ем сде­лать себе такие же! Пред­положим, что у нас есть два фай­ла facts.txt и thinks.txt, которые содер­жат спи­сок инте­рес­ных фак­тов и поговор­ки. На каж­дой стро­ке фай­лов находит­ся по одно­му фак­ту или поговор­ке. Сде­лаем бота, в котором будут две кноп­ки: «Фак­ты» и «Поговор­ки». Если нажать любую, бот отпра­вит поль­зовате­лю соот­ветс­тву­ющее сооб­щение. info Ес­ли ты будешь исполь­зовать для это­го бота тот же токен, что и для пре­дыду­щего, то, что­бы уви­деть кноп­ки, переза­пус­ти бота коман­дой /start. import random from telebot import types
CSS
запостил(а)
Turner
Вернуться назад

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

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



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



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