Инструменты пользователя

Инструменты сайта


develop:telegram

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
develop:telegram [2022/11/29 05:20]
admin
— (текущий)
Строка 1: Строка 1:
-====== Telegram ====== 
- 
- 
-===== pyTelegramBotAPI ===== 
-Модуль для работы с "TelegramBotAPI" используя python\\ 
-[[https://pypi.org/project/pyTelegramBotAPI/|Дока]]\\ 
-[[https://pytba.readthedocs.io/en/latest/quick_start.html#asynchronous-telebot|Еще дока]]\\ 
- 
- 
-==== Обработка событий ==== 
-Для обработки действий пользователя, используются декораторы функций python **"@bot.message_handler"**, указывается перед функцией обработчиком, агрументом указаны параметры, можно указать конкретные команды, или тип данных типа "текст/кнопки/лямбда и т.д."\\ 
-В обрабатываемой функции непременно есть аргумент "message", содержащий само сообщение\\ 
- 
-<code python> 
-  # Конкретные команды 
-@bot.message_handler(commands=['start', 'help']) 
-def start_message(message): 
- 
-  # Любой текст (внутри уже IF'ами) 
-@bot.message_handler(content_types=['text']) 
-def text_message(message): 
-</code> 
- 
- 
- 
-==== Reply Keyboard Markup ==== 
-[[https://habr.com/ru/post/580408/|Простой пример с ботом и кнопки в т.ч.]]\\ 
-[[https://surik00.gitbooks.io/aiogram-lessons/content/chapter5.html|Статья по кнопкам\\]] 
-Этот тип кнопок добавляется один раз на постоянку, справа в поле ввода, по аналогии с меню командами\\ 
-В аргументах есть так же помимо "callback_data" еще пару вариантов, url в т.ч., используется что то одно, в основном там фигня\\ 
- 
-<details> 
-<summary>:!: Минимальный пример с кнопками</summary> 
-При старте задаем кнопки меню, и обрабатываем их нажатие\\ 
- 
-<code python> 
-#!/usr/bin/python3.8 
- 
-import telebot 
-from telebot import types 
- 
-token = '50555555:AAaaaaaaaaaaa' 
-bot = telebot.TeleBot(token) 
- 
-@bot.message_handler(commands = ['start']) 
-def start_message(message): 
- 
- #inline_menu = InlineKeyboardMarkup([[ InlineKeyboardButton('Кнопка 1', callback_data = 'first_button') ]]) 
- markup=types.ReplyKeyboardMarkup(resize_keyboard=True) 
- markup.add(types.KeyboardButton("action 1")) 
- markup.add(types.KeyboardButton("action 2")) 
-         
-        # Для удаления 
-        # markup = types.ReplyKeyboardRemove() 
-         
- answer = bot.send_message(message.chat.id, "--=Приветствие=--", reply_markup = markup) 
- print(str(answer)) 
- 
-@bot.message_handler(content_types = 'text') 
-def message_reply(message): 
- if message.text == "action 1": 
- answer = bot.send_message(message.chat.id, "Выбрано действие 1") 
- print(str(answer)) 
- 
- elif message.text == "action 2": 
- answer = bot.send_message(message.chat.id, "Выбрано действие 2") 
- print(str(answer)) 
- 
- 
-bot.infinity_polling() 
-</code> 
-</details> 
- 
- 
- 
-==== Inline Keyboard Markup ==== 
-Эти кнопки прикрепляются к сообщению, можно как отправлять с новым сообщением так и изменять их при редактировании, благодаря этому можно сделать динамическое меню\\ 
- 
-При обработке необходимо вызвать метод **"answerCallbackQuery"**\\ 
- 
- 
-<details> 
-<summary>:!: Грубый пример</summary> 
- 
-<code python> 
-#!/usr/bin/python3.8 
- 
-import telebot 
-from telebot import types 
-from telebot.types import InlineKeyboardButton, InlineKeyboardMarkup 
- 
- 
-token = '55555555:AAффффффф' 
-bot = telebot.TeleBot(token) 
- 
-@bot.message_handler(commands = ['start']) 
-def start_message(message): 
- inline_btn1 = InlineKeyboardButton('Первая кнопка', callback_data = 'button_1') 
- inline_btn2 = InlineKeyboardButton('Вторая кнопка', callback_data = 'button_2') 
- 
- inline_menu = InlineKeyboardMarkup().add(inline_btn1, inline_btn2) 
- 
- answer = bot.send_message(message.chat.id, "--=Приветствие=--", reply_markup = inline_menu) 
- print(str(answer)) 
- 
-@bot.callback_query_handler(func = lambda c: c.data == 'button_1') 
-def press_button1(callback_query: types.CallbackQuery): 
- bot.answer_callback_query(callback_query.id) 
- bot.send_message(callback_query.from_user.id, 'Выбрана первая кнопка') 
- 
- 
-@bot.callback_query_handler(func = lambda c: c.data == 'button_2') 
-def press_button2(callback_query: types.CallbackQuery): 
- bot.answer_callback_query(callback_query.id) 
- bot.send_message(callback_query.from_user.id, 'Выбрана вторая кнопка') 
- 
- 
-bot.infinity_polling() 
-</code> 
-</details> 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-===== Overall ===== 
-[[https://core.telegram.org/bots/api#sendmessage|Дока]] 
- 
-В поле "chat_id" пишется ID чата/канала/пользователя. Минусом предваряется ИД канала, простой чат без минуса. Личка пользователя доступна по его ИД (это не имя пользователя, можно узнать через бота "@userinfobot")\\ 
- 
- 
-==== Inline bot ==== 
-[[https://telegram.org/blog/inline-bots|Дока]]\\ 
-Есть понятие инлайн-бота, это специфика самого бота\\ 
- 
- 
-<details> 
-<summary>:!: Минимальный бот</summary> 
-<code python> 
-#!/usr/bin/python3.8 
-import requests 
- 
-token ='123456789:aaaaaaaaaaaa' 
-url = f'https://api.telegram.org/bot{token}/sendMessage' 
-data = {'chat_id': '123321', 'text': 'this is message'} 
- 
-answer = requests.post(url, data).json() 
-print(str(answer)) 
-</code> 
- 
-<code bash> 
-  # Простая отправка сообщения: 
-curl -s -X POST https://api.telegram.org/bot1074186011:AAAAAAAAA/sendMessage -d chat_id="-7511111" -d text="Hallo Warld" 
-  
-  # Изменить сообщение: 
-curl -s -X POST https://api.telegram.org/bot1074186011:AAAAAAAAA/editMessageText -d chat_id="-7511111" -d message_id="100921" -d text="Hello World" 
-</code> 
-</details> 
- 
- 
- 
- 
- 
  
develop/telegram.1669699221.txt.gz · Последнее изменение: 2022/11/29 05:20 — admin