Сделать кнопки в Телеграм боте python

Решил немного погрузиться в изучение Python, в процессе поставил задачу отойти от стандартного Hello World и попытаться написать сразу простого бота для Telegram. В итоге, бот может отвечать на заданные фразы, присылать внешний ip адрес и делать снимок с камеры. Скажу сразу, код не идеальный, но в процессе отладки ни один котик не пострадал.

Для начала сразу оговорюсь писать будем на Python версии 3 и будем использовать модули для облегчения жизни нашего проекта.

python3 — V
Python 3.7.5

Пишем мы на Ubunru 19.10, поэтому надо учитывать, что есть две версии установленного Python.

Установим PIP и необходимые пакеты:

apt install python3 — pip
pip3 install pytelegrambotapi
pip3 install PySocks

PIP – система управления пакетами, которая используется для установки и управления программными пакетами.

pytelegrambotapi – нужен для работы с API Telegram

PySocks – прокси сервер, иначе бот не будет работать.

Как было указано выше, пишем мы на Ubuntu, поэтому в директории пользователя /home/users-name/ создаем файлы bot-file.py и config.py

как сделать кнопки в телеграм боте #pydroid3 #python #программирование


touch bot — file . py
touch config . py

Файл bot-file содержит код бота, а файл config необходим для конфигурации бота. В конфигурации необходимо будет указать список пользователей, которым разрешено взаимодействие с ботом.

Начнем с файла конфигурации, там все просто, необходимо просто указать id пользователя Telegram.

users = [ ‘id-user1’ , ‘id-user2’ ]

Переходим к файлу бота.

import config
import telebot
from telebot import apihelper
from telebot import types
import datetime
import logging
logger = logging . getLogger ( ‘log’ )
logger . setLevel ( logging . INFO )
fh = logging . FileHandler ( ‘someTestBot.log’ )
fh . setLevel ( logging . DEBUG )
formatter = logging . Formatter ( «%(asctime)s | %(levelname)-7s | %(message)s» )
fh . setFormatter ( formatter )
logger . addHandler ( fh )
### Прокси сервер
### Token telegram bot
bot = telebot . TeleBot ( ‘Token-bot’ , threaded = True )
### Функция проверки авторизации
def autor ( chatid ) :
strid = str ( chatid )
for item in config . users :
if item == strid :
return True
return False
### Клавиатура
keyboard1 = telebot . types . ReplyKeyboardMarkup ( )
keyboard1 . row ( ‘Привет’ , ‘Пока’ , ‘/ip’ , ‘/camera’ )
### Прием документов
def handle_docs_photo ( message ) :
chat_id = message . chat . id
downloaded_file = bot . download_file ( file_info . file_path )
with open ( src , ‘wb’ ) as new_file :
new_file . write ( downloaded_file )
bot . reply_to ( message , «Пожалуй, я сохраню это» )
except Exception as e :
bot . reply_to ( message , e )
### Прием фото
def handle_docs_photo ( message ) :
chat_id = message . chat . id
file_info = bot . get_file ( message . photo [ len ( message . photo ) — 1 ] . file_id )
downloaded_file = bot . download_file ( file_info . file_path )
src = ‘/home/users-name/received/’ + file_info . file_path ;
with open ( src , ‘wb’ ) as new_file :
new_file . write ( downloaded_file )
bot . reply_to ( message , «Фото добавлено» )
except Exception as e :
bot . reply_to ( message , e )
def start_message ( message ) :
if autor ( message . chat . id ) :
cid = message . chat . id
message_text = message . text
user_id = message . from_user . id
user_name = message . from_user . first_name

Еще по теме:  Команда для остановки бота Telegram

bot . send_message ( message . chat . id , ‘Привет, ‘ + user_name + ‘ Что ты хочешь от меня, собака сутулая!’ , reply_markup = keyboard1 )

bot . send_sticker ( message . chat . id , ‘CAADAgAD6CQAAp7OCwABx40TskPHi3MWBA’ )

bot . send_message ( message . chat . id , ‘Тебе сюда нельзя. Твой ID: ‘ + str ( message . chat . id ) )

bot . send_sticker ( message . chat . id , ‘CAADAgADcQMAAkmH9Av0tmQ7QhjxLRYE’ )
def camera_message ( message ) :
if autor ( message . chat . id ) :
bot . send_message ( message . chat . id , ‘Фото с камеры’ )
os . system ( ‘wget %s -O /tmp/photo.jpg’ % link )
imageFile = ‘/tmp/photo.jpg’
img = open ( imageFile , ‘rb’ )

bot . send_photo ( message . chat . id , img , caption = ‘Фото с камеры’ , reply_markup = keyboard1 )

bot . send_message ( message . chat . id , ‘Тебе сюда нельзя. Твой ID: ‘ + str ( message . chat . id ) )

bot . send_sticker ( message . chat . id , ‘CAADAgADcQMAAkmH9Av0tmQ7QhjxLRYE’ )
def prim_message ( message ) :
if autor ( message . chat . id ) :
link = ‘https://flammlin.com/pi’
os . system ( ‘wget %s -O /tmp/ip.txt’ % link )
docum = open ( ‘/tmp/ip.txt’ , ‘rb’ )
bot . send_message ( message . chat . id , docum , reply_markup = keyboard1 )
bot . send_sticker ( message . chat . id , ‘CAADAgADcQMAAkmH9Av0tmQ7QhjxLRYE’ )

bot . send_message ( message . chat . id , ‘Тебе сюда нельзя. Твой ID: ‘ + str ( message . chat . id ) )

bot . send_sticker ( message . chat . id , ‘CAADAgADcQMAAkmH9Av0tmQ7QhjxLRYE’ )
bot . polling ( )

Разберем некоторые интересные моменты, на которые следует обратить внимание.

Прокси

В данном примере используется Socks 5 прокси:

### Прокси сервер

Достаточно указать свои данные и запустить бот.

Token ID

В начале пытался брать Token из файла конфигурации, но бот так и не запустился. Пришлось оставить в коде, поэтому Token бота вписывать придется в сам код.

### Token telegram bot
bot = telebot . TeleBot ( ‘Token-bot’ , threaded = True )

Авторизация

### Функция проверки авторизации
def autor ( chatid ) :
strid = str ( chatid )
for item in config . users :
if item == strid :
return True
return False

Для проверки пользователя используется функция проверки id пользователя из файла конфигурации. В случае успеха бот присылает сообщение и стикер, тоже самое в случае отказа.

Клавиатура

Красивые кнопочки любят все.

### Клавиатура
keyboard1 = telebot . types . ReplyKeyboardMarkup ( )
keyboard1 . row ( ‘Привет’ , ‘Пока’ , ‘/ip’ , ‘/camera’ )

Второй горизонтальный ряд добавляется легко, просто пишем снова – keyboard1.row.

Прием документов и фотографий

Бот умеет сохранять документы и фотографии, которые скачиваются в папку received. Папку предварительно необходимо будет создать в профиле пользователя, где создавали файлы бота и файла конфигурации.

Wget

С вопросом получения картинки с камеры и внешнего ip адреса пришлось повозить подольше. Но в итоге через папку temp и вызов через bash wget все получилось.

Планировщик crontab

Бот запускается через планировщик задач, каждые пять минут происходит проверка запущенного процесса. Так как бот использует прокси и может произойти обрыв канала интернет, то повторный запуск бота не сможет произойти.

Для начала необходимо точно определить где и какая версия Python установлена.

Источник: flammlin.com

Как создать кнопки в боте Telegram с помощью Python

bazarmusicbar.ru

Телеграмм боты — это отличный способ автоматизировать и улучшить коммуникацию с вашими пользователями. Одной из самых полезных функций телеграмм ботов является возможность создания кнопок. Кнопки позволяют пользователям удобно взаимодействовать с ботом и выбирать опции или выполнять определенные действия.

Еще по теме:  Нет звука уведомлений Телеграмм на Андроид

На языке программирования Python существует несколько библиотек, которые позволяют создавать кнопки в телеграмм боте. Одна из самых популярных и простых в использовании библиотек — python-telegram-bot. Для начала работы с библиотекой необходимо подключить ее к вашему проекту и создать экземпляр класса Updater.

После этого вы можете создать и настроить кнопку с помощью метода ReplyKeyboardMarkup. В этом методе вы можете передать список списков с текстом кнопок, а также опциональные параметры, такие как resize_keyboard и one_time_keyboard.

from telegram import ReplyKeyboardMarkup

from telegram.ext import Updater, CommandHandler

def start(update, context):

custom_keyboard = [[‘/command1’, ‘/command2’], [‘/command3’]]

context.bot.send_message(chat_id=update.effective_chat.id, text=»Choose a command:», reply_markup=reply_markup)

updater = Updater(token=’YOUR_TOKEN’, use_context=True)

start_handler = CommandHandler(‘start’, start)

В результате выполнения этого кода ваш телеграмм бот будет выводить кнопки с командами «/command1», «/command2» и «/command3». Пользователь может выбрать необходимую команду, нажав на соответствующую кнопку.

Таким образом, создание кнопок в телеграмм боте на языке Python достаточно просто с помощью библиотеки python-telegram-bot. Эта возможность позволяет сделать интерфейс вашего бота более удобным и интуитивно понятным для пользователей.

Как добавить кнопки в телеграмм боте на Python?

В этой статье мы рассмотрим, как добавить кнопки в телеграмм боте на языке Python. Кнопки позволяют сделать интерфейс бота более удобным для пользователей и облегчить взаимодействие с ним.

Для создания кнопок в телеграмм боте на Python мы будем использовать библиотеку python-telegram-bot. Эта библиотека предоставляет набор функций для работы с телеграмм ботом: отправка сообщений, обработка команд и создание кнопок.

Прежде всего, необходимо установить библиотеку python-telegram-bot. Для этого можно воспользоваться менеджером пакетов pip:

  • Откройте терминал в вашем проекте.
  • Введите команду pip install python-telegram-bot .
  • Дождитесь установки библиотеки.

После установки библиотеки python-telegram-bot, мы можем начать создавать кнопки для нашего телеграмм бота.

Для создания кнопок в телеграмм боте используется класс telegram.InlineKeyboardButton . Этот класс позволяет создавать кнопки разных типов: текстовые, URL-кнопки, внутренние ссылки и другие.

Пример создания кнопки:

button = telegram.InlineKeyboardButton(text=’Нажми меня!’, callback_data=’button_clicked’)

В примере мы создали текстовую кнопку с названием «Нажми меня!» и задали ей callback_data «button_clicked». Callback_data — это данные, которые будут переданы вместе с кнопкой при ее нажатии.

Далее, для добавления кнопки в сообщение, нужно создать клавиатуру и добавить кнопку в нее. Для этого используется класс telegram.InlineKeyboardMarkup .

Пример добавления кнопки в сообщение:

keyboard = telegram.InlineKeyboardMarkup(

) message.reply_text(‘Пример сообщения с кнопкой’, reply_markup=keyboard)

В примере мы создали клавиатуру с кнопкой и передали ее в метод reply_text . Таким образом, кнопка будет отображаться рядом с сообщением.

Теперь у вас есть базовые знания о создании кнопок в телеграмм боте на языке Python. Вы можете использовать их для создания интерактивного интерфейса для своего бота и улучшения взаимодействия с пользователями.

Шаг 1. Установка необходимых библиотек

Перед тем, как приступить к созданию кнопок в телеграмм боте на языке Python, необходимо установить несколько библиотек.

Во-первых, установите библиотеку python-telegram-bot с помощью следующей команды:

pip install python-telegram-bot

Затем, установите библиотеку Flask для создания веб-приложения, которое будет обрабатывать входящие запросы от Telegram:

Еще по теме:  Для чего сторонний видеоплеер Телеграмм

pip install flask

После успешной установки этих библиотек вы будете готовы к созданию кнопок в телеграмм боте на языке Python.

Шаг 2. Создание бота в телеграмм

Перед тем как начать создавать кнопки для вашего телеграмм бота, вам необходимо создать самого бота в приложении Телеграмм. Для этого выполните следующие шаги:

Шаг 1: Откройте приложение Телеграмм и найдите бота под названием «BotFather».

Шаг 2: Введите команду «/newbot», чтобы создать нового бота.

Шаг 3: Следуйте инструкциям BotFather и введите имя для вашего бота. Затем придумайте уникальное имя пользователя, которое должно заканчиваться на «_bot». Например, «my_bot».

Шаг 4: После успешного создания бота, BotFather предоставит вам токен, который вы будете использовать для взаимодействия с API Телеграмм. Обязательно сохраните этот токен в надежном месте, так как он потребуется вам позже.

Шаг 5: Теперь ваш бот готов к использованию. Вы можете использовать его токен для программного взаимодействия с API Телеграмм и создания кнопок, которые будут отображаться пользователям при взаимодействии с вашим ботом.

После создания бота и получения токена, вы можете приступить к созданию кнопок, которые будут интерактивно взаимодействовать с пользователями вашего бота. Для этого вам потребуется некоторые навыки программирования на языке Python и знание Telegram Bot API.

Шаг 3. Добавление кнопок в бота

Чтобы добавить кнопки в телеграмм бота на языке Python, нам понадобится использовать метод ReplyKeyboardMarkup из библиотеки python-telegram-bot .

from telegram import ReplyKeyboardMarkup, ReplyKeyboardRemove # Описываем кнопки, передавая их в виде двумерного списка keyboard = [[‘Кнопка 1’, ‘Кнопка 2’], [‘Кнопка 3’, ‘Кнопка 4’]] # Создаем объект клавиатуры с кнопками reply_markup = ReplyKeyboardMarkup(keyboard) # Отправляем клавиатуру пользователю update.message.reply_text(‘Выберите кнопку:’, reply_markup=reply_markup)

В этом примере мы создаем клавиатуру с четырьмя кнопками и отправляем ее пользователю. Когда пользователь выбирает кнопку, бот получает соответствующий текст.

Класс ReplyKeyboardMarkup принимает на вход список списков кнопок. Каждый внутренний список представляет собой одну строку кнопок. В данном примере у нас две строки: одна с кнопками «Кнопка 1» и «Кнопка 2», а другая — с кнопками «Кнопка 3» и «Кнопка 4».

Этот код создает клавиатуру с кнопками в виде таблицы. Каждая кнопка располагается в виде ячейки таблицы. Пользователь может выбрать одну из кнопок, нажав на нее.

Чтобы удалить клавиатуру после ее использования, можно использовать класс ReplyKeyboardRemove :

# Удаляем клавиатуру reply_markup = ReplyKeyboardRemove() update.message.reply_text(‘Клавиатура удалена.’, reply_markup=reply_markup)

Это позволит удалить клавиатуру после отправки сообщения. Теперь у вас есть все необходимые инструменты для добавления кнопок в телеграмм бота на языке Python.

Источник: bazarmusicbar.ru

Разработка Telegram-бота на Python+C

Создаем Telegram-бот, работаем c I/O Bound нагрузкой, подключаем фичи Google Drive и пишем на C внутри Python.

Введение

В этой инструкции мы создадим приложение, которое интегрируется со сторонними API. Разберем I/O Bound нагрузку и поработаем с асинхронностью в Python.

Часть сервера Telegram-бота мы будем писать на С, так как он считается перформанс-ориентированным языком, поэтому посмотрим также модуль обработки СPU Bound нагрузки, использующийся для сложных вычислений процессора.

Рейтинг
( Пока оценок нет )
Загрузка ...