Telegram Bot proxy in Python. Telegram Bot on Python 3
Telegram Bot proxy in Python. Telegram Bot on Python 3
Today we will create a simple telegram bot on python that can respond to our messages, interact with us, offering answer options in the form of buttons and process the result we selected by executing commands on the server. Work with Telegram Bot Api we will using the pyTelegramBotAPI ( telebot ) library written in Python .
To register a new bot, you need to write the BotFather bot. To do this, type BotFather in the search bar and in the results find it:
Attention! Check bot name, image and a check mark, indicating that he is really the father of all bots.
Click it and write the command /start and the bot in the response message will send a list of all available commands:
We need to creating a new bot, so we select the /newbot command. You can either type the command yourself or select the mouse in the message and it will automatically be sent:
The first step we are offered to give a name to the new bot, it can be arbitrary. We will call it PocketAdmin :
Now you need to specify the bot identifier ( username ), it must end with _bot and be unique in the system. We will indicate PocketAdminTech_bot :
In the last message, we received a link to our new bot t.me/PocketAdminTech_bot and the token (shaded) needed to interact with the API.
Attention! Be sure to keep the token and keep it secret!
Install Python and library pyTelegramBotAPI
Download Python you can from the official site (how to install the package on Centos 8 can be found in this article ) and we will not focus on this issue.
To install the pyTelegramBotAPI package, use pip :
On this, the preparatory work is completed, we proceed directly to writing our bot.
Edit_message_text Python telegram Bot. Специальные кнопки
Некоторым ботам жизненно необходим ваш номер телефона или местоположение, например, для привязки к учётным записям на других сайтах или же поиска близлежащих объектов на карте. Разработчики Telegram прислушались к мнению ботоводов и добавили особые свойства обычным (не инлайновым) кнопкам. Итак, чтобы запросить номер телефона, нужно помимо аргументаtext
передать аргументrequest_contact=True
, а для геолокации, соответственно,request_location=True
. Обратите внимание, что одновременно у кнопки может быть не больше одного особого свойства (можно не указывать никакой), а также что специальные кнопки могут быть отправлены только в диалоги (бот-человек). Напишем код, который на команду /geophone отправит нам клавиатуру с этими кнопками.
# не забудьте про from telebot import types @bot.message_handler(commands=) def geophone(message): # Эти параметры для клавиатуры необязательны, просто для удобства keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True)
button_phone = types.KeyboardButton(text= "Отправить номер телефона" , request_contact=True)
button_geo = types.KeyboardButton(text= "Отправить местоположение" , request_location=True)
keyboard.add(button_phone, button_geo)
bot.send_message(message.chat.id, "Отправь мне свой номер телефона или поделись местоположением, жалкий человечишка!" , reply_markup=keyboard)
При нажатии на кнопку отправки номера телефона сервер вернёт объект Message с непустым типом, а при нажатии на кнопку отправки геолокации – с непустым типом.
Edit Message Text with Python Telegram Bot: Special Buttons
In this example, we will create a Python Telegram bot that responds to specific buttons and returns a `Message` object with a non-empty type. We will use the `python-telegram-bot` library to handle the bot's functionality. First, install the required library: ```html pip install python-telegram-bot ``` Next, create a new Python file (e.g., `bot.py`) and add the following code: ```python import logging from telegram.ext import Updater, CommandHandler, MessageHandler, CallbackQueryHandler from telegram import Bot, Message # Enable logging logging.basicConfig(level=logging.INFO) # Token for your Telegram bot TOKEN = 'YOUR_BOT_TOKEN' # Define the bot bot = Bot(TOKEN) # Define the handlers def start(update, context): context.bot.send_message(chat_id=update.effective_chat.id, text='Hello! I\'m a bot!') def button_handler(update, context): query = update.callback_query if query.data == 'phone': # Return a Message object with a non-empty type message = Message(text='Phone number sent!', type='phone_number') context.bot.send_message(chat_id=update.effective_chat.id, text=message.text, type=message.type) elif query.data == 'location': # Return a Message object with a non-empty type message = Message(text='Location sent!', type='location') context.bot.send_message(chat_id=update.effective_chat.id, text=message.text, type=message.type) # Define the main function def main(): # Create the Updater and pass it the bot's token updater = Updater(TOKEN, use_context=True) # Define the handlers dp = updater.dispatcher # Add the handlers dp.add_handler(CommandHandler('start', start)) dp.add_handler(CallbackQueryHandler(button_handler, pattern='phone|location')) # Start the bot updater.start_polling() updater.idle() if __name__ == '__main__': main() ``` In this code, we define a bot that responds to the `/start` command and sends a greeting message. We also define a `button_handler` function that handles the callbacks for the special buttons. When the user presses the "Phone" button, the bot returns a `Message` object with a non-empty type, and when the user presses the "Location" button, the bot returns a `Message` object with a non-empty type. To test the bot, run the script and send the `/start` command to the bot. Then, press the "Phone" or "Location" button to see the bot's response.Важно : если вы используете конечные автоматы или любой другой механизм состояний, который будет ждать от пользователя его телефон в объекте Contact, помните, что ушлый юзер может попробовать обмануть бота и скинуть любой другой контакт из записной книжки. Чтобы убедиться, что номер телефона принадлежит именно этому конкретному пользователю, сравнитеuser_id
в объектеfrom
сuser_id
в объектеContact
, они должны совпадать.