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

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


develop:telegram

Это старая версия документа!


Telegram

pyTelegramBotAPI

Модуль для работы с «TelegramBotAPI» используя python
Дока
Еще дока

Обработка событий

Для обработки действий пользователя, используются декораторы функций python «@bot.message_handler», указывается перед функцией обработчиком, агрументом указаны параметры, можно указать конкретные команды, или тип данных типа «текст/кнопки/лямбда и т.д.»
В обрабатываемой функции непременно есть аргумент «message», содержащий само сообщение

  # Конкретные команды
@bot.message_handler(commands=['start', 'help'])
def start_message(message):
 
  # Любой текст (внутри уже IF'ами)
@bot.message_handler(content_types=['text'])
def text_message(message):

Reply Keyboard Markup

Простой пример с ботом и кнопки в т.ч.
Этот тип кнопок добавляется справа в поле ввода, по аналогии с меню командами

:!: Минимальный пример с кнопками

При старте задаем кнопки меню, и обрабатываем их нажатие

#!/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"))
 
	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()

inline_keyboard

Кнопки «Обратного вызова», под сообщением, прикрепляются к сообщению отдельным объектом, можно как отправлять с новым сообщением так и изменять их при редактировании, благодаря этому можно сделать динамическое меню

После того как пользователь выбирает такую кнопку, висит ожидание, в коде нужно вызвать метод «answerCallbackQuery» для продолжения

:!: Code
  # Класс кнопки
InlineKeyboardButton(
  text,
  url = NULL,
  callback_data = NULL,
  switch_inline_query = NULL,
  switch_inline_query_current_chat = NULL
)

Overall

Дока

В поле «chat_id» пишется ID чата/канала/пользователя. Минусом предваряется ИД канала, простой чат без минуса. Личка пользователя доступна по его ИД (это не имя пользователя, можно узнать через бота «@userinfobot»)

:!: Минимальный бот
#!/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))
  # Простая отправка сообщения:
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"
develop/telegram.1669640281.txt.gz · Последнее изменение: 2022/11/28 12:58 — admin