Как написать телеграм бота на питоне?
Без лишних слов. Сразу приступим к делу.
Для написания телеграм бота на Python, вам необходимо выполнить следующие шаги:
1. Создайте нового бота в Telegram, написав в Telegram боте @BotFather команду /newbot и следуя инструкциям. При создании бота вам нужно будет придумать ему имя - для примера я создам бота с именем python-telegram-bot. У вас имя будет другое. В конце создания бота - вы получите токен - сохраните его на вашем устройстве.
2. Установите библиотеку python-telegram-bot, используя команду pip install python-telegram-bot в консоли вашего компьютера.
Чтобы открыть командную строку на Windows, в поиске найдите прогрумму CMD и запустите ее.
3. Запустите редактор Visual Studio Code (либо любой другой) и создайте файл main.py
4. Импортируйте необходимые библиотеки в файл main.py:
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes
5. Создайте переменную token и поместите в нее строку токена полученного от @BotFather
token = "ваш токен"
6. Создайте функцию для обработки команды hello - данная функция будет отвечать пользователю строкой Hello с именем пользователя
async def hello(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text(f'Hello {update.effective_user.first_name}')
7. Следующей командой создаем инстанс бота с использованием токена
app = ApplicationBuilder().token(token).build()
8. Добавляем обработчик команды /hello в вашем боте - для этого мы и готовили функцию hello выше.
app.add_handler(CommandHandler("hello", hello))
9. Наконец запускаем бота
app.run_polling()
Пока программа запущена - найдите вашего бота в telegram - и отправьте вашему боту команду /hello
Поздравляю! Вы написали своего первого бота. Попробуйте написать другие фунциии и зарегистрировать новые команды.
Итоговый код - должен выглядеть примерно так:
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes
token = "ваш токен"
# Функция отвечает пользователю Hello с указанием имени пользователя
async def hello(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text(f'Hello {update.effective_user.first_name}')
app = ApplicationBuilder().token(token).build()
app.add_handler(CommandHandler("hello", hello))
app.run_polling()