Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
develop:telegram [2022/11/28 14:09] admin |
— (текущий) | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Telegram ====== | ||
- | |||
- | |||
- | ===== pyTelegramBotAPI ===== | ||
- | Модуль для работы с " | ||
- | [[https:// | ||
- | [[https:// | ||
- | |||
- | |||
- | ==== Обработка событий ==== | ||
- | Для обработки действий пользователя, | ||
- | В обрабатываемой функции непременно есть аргумент " | ||
- | |||
- | <code python> | ||
- | # Конкретные команды | ||
- | @bot.message_handler(commands=[' | ||
- | def start_message(message): | ||
- | |||
- | # Любой текст (внутри уже IF' | ||
- | @bot.message_handler(content_types=[' | ||
- | def text_message(message): | ||
- | </ | ||
- | |||
- | |||
- | |||
- | ==== Reply Keyboard Markup ==== | ||
- | [[https:// | ||
- | [[https:// | ||
- | Этот тип кнопок добавляется справа в поле ввода, по аналогии с меню командами\\ | ||
- | |||
- | |||
- | < | ||
- | < | ||
- | При старте задаем кнопки меню, и обрабатываем их нажатие\\ | ||
- | |||
- | <code python> | ||
- | # | ||
- | |||
- | import telebot | ||
- | from telebot import types | ||
- | |||
- | token = ' | ||
- | bot = telebot.TeleBot(token) | ||
- | |||
- | @bot.message_handler(commands = [' | ||
- | def start_message(message): | ||
- | |||
- | # | ||
- | markup=types.ReplyKeyboardMarkup(resize_keyboard=True) | ||
- | markup.add(types.KeyboardButton(" | ||
- | markup.add(types.KeyboardButton(" | ||
- | |||
- | answer = bot.send_message(message.chat.id, | ||
- | print(str(answer)) | ||
- | |||
- | @bot.message_handler(content_types = ' | ||
- | def message_reply(message): | ||
- | if message.text == " | ||
- | answer = bot.send_message(message.chat.id, | ||
- | print(str(answer)) | ||
- | |||
- | elif message.text == " | ||
- | answer = bot.send_message(message.chat.id, | ||
- | print(str(answer)) | ||
- | |||
- | |||
- | bot.infinity_polling() | ||
- | </ | ||
- | </ | ||
- | |||
- | |||
- | |||
- | ==== Inline Keyboard Markup ==== | ||
- | Эти кнопки прикрепляются к сообщению, | ||
- | |||
- | При обработке необходимо вызвать метод **" | ||
- | |||
- | |||
- | < | ||
- | < | ||
- | |||
- | <code python> | ||
- | # | ||
- | |||
- | import telebot | ||
- | from telebot import types | ||
- | from telebot.types import InlineKeyboardButton, | ||
- | |||
- | |||
- | token = ' | ||
- | bot = telebot.TeleBot(token) | ||
- | |||
- | @bot.message_handler(commands = [' | ||
- | def start_message(message): | ||
- | inline_btn1 = InlineKeyboardButton(' | ||
- | inline_btn2 = InlineKeyboardButton(' | ||
- | |||
- | inline_menu = InlineKeyboardMarkup().add(inline_btn1, | ||
- | |||
- | answer = bot.send_message(message.chat.id, | ||
- | print(str(answer)) | ||
- | |||
- | @bot.callback_query_handler(func = lambda c: c.data == ' | ||
- | def press_button1(callback_query: | ||
- | bot.answer_callback_query(callback_query.id) | ||
- | bot.send_message(callback_query.from_user.id, | ||
- | |||
- | |||
- | @bot.callback_query_handler(func = lambda c: c.data == ' | ||
- | def press_button2(callback_query: | ||
- | bot.answer_callback_query(callback_query.id) | ||
- | bot.send_message(callback_query.from_user.id, | ||
- | |||
- | |||
- | bot.infinity_polling() | ||
- | </ | ||
- | </ | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | ===== Overall ===== | ||
- | [[https:// | ||
- | |||
- | В поле " | ||
- | |||
- | |||
- | ==== Inline bot ==== | ||
- | [[https:// | ||
- | Есть понятие инлайн-бота, | ||
- | |||
- | |||
- | < | ||
- | < | ||
- | <code python> | ||
- | # | ||
- | import requests | ||
- | |||
- | token =' | ||
- | url = f' | ||
- | data = {' | ||
- | |||
- | answer = requests.post(url, | ||
- | print(str(answer)) | ||
- | </ | ||
- | |||
- | <code bash> | ||
- | # Простая отправка сообщения: | ||
- | curl -s -X POST https:// | ||
- | |||
- | # Изменить сообщение: | ||
- | curl -s -X POST https:// | ||
- | </ | ||
- | </ | ||
- | |||
- | |||
- | |||
- | |||
- | |||