Для использования библиотеки telebot
для создания Telegram бота на Python, сначала нужно установить ее с помощью pip:
pip install pytelegrambotapi
Code language: Bash (bash)
Затем вы можете создать новый файл Python и начать писать свой бот с помощью этой библиотеки. Вот простой пример, демонстрирующий её основные функции:
import telebot
# Создаем экземпляр бота и передаем ему токен
bot = telebot.TeleBot('YOUR_TOKEN')
# Обработка команды /start
@bot.message_handler(commands=['start'])
def start_command(message):
bot.send_message(message.chat.id, 'Привет! Я бот. Как я могу тебе помочь?')
# Обработка команды /help
@bot.message_handler(commands=['help'])
def help_command(message):
bot.send_message(message.chat.id, 'Это помощь')
# Обработка входящих сообщений
@bot.message_handler(func=lambda message: True)
def echo_all(message):
bot.reply_to(message, message.text)
# Запускаем бота
bot.polling()
Code language: PHP (php)
В этом примере мы создаем экземпляр бота, регистрируем обработчики команд /start
и /help
и обработчик входящих сообщений. Затем мы запускаем бота с помощью метода polling()
.
Библиотека предоставляет множество других функций для работы с Telegram API, таких как работа с клавиатурами, обработка файлов, обработка inline-запросов и многое другое.
Клавиатуры
import telebot
from telebot import types
# Создаем экземпляр бота и передаем ему токен
bot = telebot.TeleBot('YOUR_TOKEN')
# Обработка команды /start
@bot.message_handler(commands=['start'])
def start_command(message):
# Создаем клавиатуру
keyboard = types.ReplyKeyboardMarkup(row_width=2)
button1 = types.KeyboardButton(text='Кнопка 1')
button2 = types.KeyboardButton(text='Кнопка 2')
button3 = types.KeyboardButton(text='Кнопка 3')
button4 = types.KeyboardButton(text='Кнопка 4')
keyboard.add(button1, button2, button3, button4)
# Отправляем сообщение с клавиатурой
bot.send_message(message.chat.id, 'Выберите кнопку:', reply_markup=keyboard)
# Обработка входящих сообщений
@bot.message_handler(func=lambda message: True)
def echo_all(message):
# Обработка нажатия на кнопку
if message.text == 'Кнопка 1':
bot.reply_to(message, 'Вы нажали на кнопку 1')
elif message.text == 'Кнопка 2':
bot.reply_to(message, 'Вы нажали на кнопку 2')
elif message.text == 'Кнопка 3':
bot.reply_to(message, 'Вы нажали на кнопку 3')
elif message.text == 'Кнопка 4':
bot.reply_to(message, 'Вы нажали на кнопку 4')
# Запускаем бота
bot.polling()
Code language: PHP (php)
В этом примере мы создаем клавиатуру с помощью класса ReplyKeyboardMarkup
и отправляем ее вместе с сообщением с помощью метода send_message()
. При нажатии на кнопку, мы обрабатываем входящее сообщение с помощью обработчика echo_all()
.
Inline-запросы
import telebot
from telebot import types
# Создаем экземпляр бота и передаем ему токен
bot = telebot.TeleBot('YOUR_TOKEN')
# Обработка команды /start
@bot.message_handler(commands=['start'])
def start_command(message):
# Создаем inline-кнопки
keyboard = types.InlineKeyboardMarkup(row_width=2)
button1 = types.InlineKeyboardButton(text='Кнопка 1', callback_data='button1')
button2 = types.InlineKeyboardButton(text='Кнопка 2', callback_data='button2')
button3 = types.InlineKeyboardButton(text='Кнопка 3', callback_data='button3')
button4 = types.InlineKeyboardButton(text='Кнопка 4', callback_data='button4')
keyboard.add(button1, button2, button3, button4)
# Отправляем сообщение с inline-клавиатурой
bot.send_message(message.chat.id, 'Выберитекнопку:', reply_markup=keyboard)
# Обработка inline-запросов
@bot.callback_query_handler(func=lambda call: True)
def callback_query(call):
if call.data == 'button1':
bot.answer_callback_query(callback_query_id=call.id, text='Вы нажали на кнопку 1')
elif call.data == 'button2':
bot.answer_callback_query(callback_query_id=call.id, text='Вы нажали на кнопку 2')
elif call.data == 'button3':
bot.answer_callback_query(callback_query_id=call.id, text='Вы нажали на кнопку 3')
elif call.data == 'button4':
bot.answer_callback_query(callback_query_id=call.id, text='Вы нажали на кнопку 4')
# Запускаем бота
bot.polling()
Code language: PHP (php)
В этом примере мы создаем inline-клавиатуру с помощью класса InlineKeyboardMarkup
и отправляем ее вместе с сообщением с помощью метода send_message()
. При нажатии на inline-кнопку, мы обрабатываем запрос с помощью обработчика callback_query()
. Мы также отправляем ответ на запрос с помощью метода answer_callback_query()
.
Обработка файлов
telebot
также обеспечивает возможность обработки файлов, отправляемых пользователями. Например, вы можете создать бота, который будет сохранять фотографии, отправленные пользователями, на локальный диск. Вот пример:
import telebot
import os
# Создаем экземпляр бота и передаем ему токен
bot = telebot.TeleBot('YOUR_TOKEN')
# Обработка входящих фотографий
@bot.message_handler(content_types=['photo'])
def photo_handler(message):
# Получаем информацию о фотографии
photo = message.photo[-1]
file_id = photo.file_id
file_info = bot.get_file(file_id)
# Загружаем фотографию на локальный диск
downloaded_file = bot.download_file(file_info.file_path)
file_name = f"{message.chat.id}_{file_id}.jpg"
with open(file_name, 'wb') as f:
f.write(downloaded_file)
# Отправляем сообщение с подтверждением загрузки
bot.reply_to(message, 'Фотография загружена')
# Запускаем бота
bot.polling()
Code language: PHP (php)
В этом примере мы регистрируем обработчик photo_handler()
, который будет вызываться при получении фотографий. Мы получаем информацию о фотографии с помощью метода get_file()
, загружаем фотографию на локальный диск с помощью метода download_file()
, и отправляем сообщение с подтверждением загрузки с помощью метода reply_to()
. Файл сохраняется на локальный диск в виде chat_id_file_id.jpg
.
Библиотека также обеспечивает поддержку других типов файлов, таких как видео, аудио, документы и другие.
Работа с аудио/видео
Библиотека поддерживает несколько функций для работы с аудио и видео. Ниже приведены примеры некоторых из них
Отправка аудио и видео файлов
import telebot
# Создаем экземпляр бота и передаем ему токен
bot = telebot.TeleBot('YOUR_TOKEN')
# Отправка аудио-файла
with open('audio.mp3', 'rb') as audio:
bot.send_audio(chat_id, audio)
# Отправка видео-файла
with open('video.mp4', 'rb') as video:
bot.send_video(chat_id, video)
Code language: PHP (php)
В этом примере мы используем методы send_audio()
и send_video()
для отправки аудио и видео файлов соответственно. Файлы должны быть открыты в режиме бинарного чтения перед отправкой.
Загрузка аудио и видео файлов
import telebot
# Создаем экземпляр бота и передаем ему токен
bot = telebot.TeleBot('YOUR_TOKEN')
# Обработка входящих аудио-файлов
@bot.message_handler(content_types=['audio'])
def audio_handler(message):
# Получаем информацию о файле
audio = message.audio
file_id = audio.file_id
file_info = bot.get_file(file_id)
# Загружаем файл на локальный диск
downloaded_file = bot.download_file(file_info.file_path)
file_name = f"{message.chat.id}_{file_id}.mp3"
with open(file_name, 'wb') as f:
f.write(downloaded_file)
# Отправляем сообщение с подтверждением загрузки
bot.reply_to(message, 'Аудиофайл загружен')
# Запускаем бота
bot.polling()
Code language: PHP (php)
В этом примере мы регистрируем обработчик audio_handler()
, который будет вызываться при получении аудио-файлов. Мы получаем информацию о файле с помощью метода get_file()
, загружаем файл на локальный диск с помощью метода download_file()
, и отправляем сообщение с подтверждением загрузки с помощью метода reply_to()
. Файл сохраняется на локальный диск в виде chat_id_file_id.mp3
.
Аналогичным образом можно обрабатывать входящие видео-файлы с помощью обработчика video_handler()
. Библиотека также поддерживает другие функции, такие как send_video_note()
, send_animation()
, send_voice()
, send_document()
и другие.
Отправка видео-сообщения в формате VideoNote
Функция send_video_note()
позволяет отправлять видео-сообщения в формате VideoNote. Вот простой пример использования этой функции:
import telebot
# Создаем экземпляр бота и передаем ему токен
bot = telebot.TeleBot('YOUR_TOKEN')
# Отправка видео-сообщения
with open('videonote.mp4', 'rb') as video_note:
bot.send_video_note(chat_id, video_note)
# Запускаем бота
bot.polling()
Code language: PHP (php)
В этом примере мы используем метод send_video_note()
для отправки видео-сообщения. Файл должен быть открыт в режиме бинарного чтения перед отправкой.
Формат VideoNote — это специальный формат видео-файлов, который может быть проигран в Telegram как анимированный видеоролик. Это позволяет создавать интересные эффекты и анимации, которые можно использовать в ботах.
Обратите внимание, что send_video_note()
также поддерживает опциональные параметры duration
, length
и thumb
. Вы можете ознакомиться с документацией на официальном сайте библиотеки для получения дополнительной информации и примеров использования.