Как подключить бота в Телеграмме python

В данной статье я покажу, как создать простого телеграм бота на Python. В нашем проекте мы будем использовать библиотеку «aiogram».

Подготовка.

Начнем с импорта всего необходимого.

from aiogram import Bot, types from aiogram.dispatcher import Dispatcher from aiogram.utils import executor

После того как мы импортировали все, можно переходить к регистрации бота. Делается это очень легко, нужно просто получить токен в боте «BotFather». Для этого просто найдите данный бот ,после чего выберите пункт «new bot». Когда мы получили токен, нам надо связать его с проектом.

Делается это очень легко.

bot = Bot(token=’#токен’) dp = Dispatcher(bot)

Теперь мы сможем взаимодействовать с нашим ботом.

Первая команда для бота.

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

Но просто так у нас ничего не получится, для запуска работы бота необходимо написать еще пару строк.

Telegram магазин на Python #4 оплата заказа в криптовалюте ч1


if __name__ == ‘__main__’: executor.start_polling(dp)

Все, наш бот теперь сможет нас приветствовать. После того как мы напишем «/start» , бот нам ответит.

Таких команд вы можете делать очень много.

Эхо-бот.

Эхо-бот будет отвечать нам сообщениями, которые мы ему написали. Делается он так.

Создание кнопок.

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

from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton, ReplyKeyboardMarkup

Это позволит нам создавать кнопки(клавиатуру), которая будет заменять написание команд вручную.

Начнем с создания меню. После я покажу, как создать инлайн клавиатуру.

main = ReplyKeyboardMarkup(resize_keyboard=True) main.add(‘HELP’).add(‘HELLO’) #добавляем кнопки

Теперь мы должны добавить их в наш бот. Для этого мы добавим его в команду «/start», чтобы бот выдавал нам это меню.

Теперь после запуска бот выдаст нам меню, с которым мы сможем взаимодействовать. Но сейчас кнопки не будут реагировать. Для того чтобы они могли что-то выполнять прописываем такой код.

Теперь после нажатия на эти кнопки вы будете получать сообщения от бота.

Еще по теме:  Захожу на web версию Телеграма и открывается стара страница

Можно переходить к созданию инлайн клавиатуры.Начнем с написания кнопок. Делается это примерно как и создание кнопок для меню.

catalog_list=InlineKeyboardMarkup(row_width=2) # указываем кол-во кнопок на одной строке catalog_list.add(InlineKeyboardMarkup(text=’Хабр’,url=’https://habr.com/ru/all/’), InlineKeyboardMarkup(text=’Функции’, callback_data=’button2′), InlineKeyboardMarkup(text=’ABOUT’, callback_data=’button3′))

Теперь сделаем обращение к ним. Я хочу подключить данную клавиатуру к кнопкам меню,чтобы после нажатия на них , я получал её и мог с ней взаимодействовать. Для этого переделаю кнопку «HELP»

Теперь после нажатия кнопки «HELP» мы будем получать клавиатуру, с которой сможем взаимодействовать.

Как подключить базу данных к телеграмм-боту / Python SQL

Заключение.

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

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

Загрузка телеграм бота на сервер. Подробные шаги загрузки файла *.py на бесплатный сервер PythonAnywhere

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

Существует множество бесплатных виртуальных серверов для тестирования ботов. Вот некоторые из них:

  1. PythonAnywhere — облачный хостинг для приложений Python. PythonAnywhere предоставляет бесплатный тарифный план, который позволяет развернуть одно приложение Python.
  2. Kamatera — есть тестовый период на месяц. Отличное решение для начального теста, а после пролноценной работы.
  3. Heroku — платформа для развертывания и хостинга приложений, которая предоставляет бесплатный тарифный план. Он позволяет развернуть приложение на серверах Heroku и бесплатно запустить до 5 приложений.
  4. Amazon Web Services (AWS) — облачная платформа, которая предоставляет бесплатный тарифный план, включая Amazon EC2 (виртуальные серверы), Amazon S3 (хранилище данных) и другие сервисы.
  5. Google Cloud Platform (GCP) — облачная платформа, которая также предоставляет бесплатный тарифный план, включая Google Compute Engine (виртуальные серверы) и другие сервисы.
  6. Microsoft Azure — облачная платформа, которая также предоставляет бесплатный тарифный план, включая виртуальные машины и другие сервисы.

PythonAnywhere

Для первого тестирования своего бота я выбрала PythonAnywhere. Регистрация интуитивно понятная.
Примечание: в бесплатном тарифе очень мало процесорных минут, так что этот тариф больше подходит для тестов, а не для полноценной работы. Для полноценной работа я рекомендую платные сервера https://zomro.com/

ШАГ 1. Начало работы. Установка виртуальной среды

1. Перейдите в Dashboard и запустите консоль. Для этого нажимаем New Console — $ Bash

2. Выполните следующую команду в консоли, чтобы установить инструмент virtualenv (инструмент для создания виртуальной среды):

Источник: stepfor.top

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

Python

Представьте, что у вас есть бот в мессенджере, который присылает вам случайно выбранную картинку с собачкой, когда вам захочется. Звучит здорово, да? Давайте сделаем такого.

Еще по теме:  Как сделать чат бота в Telegram самому

В этом уроке мы будем использовать Python 3, библиотеку python-telegram-bot и публичный API RandomDog.

В конце урока у вас будет свой бот для снятия стресса, который будет присылать вам милых пёсиков, когда захотите.

Начнём

Перед тем как писать программу, нам нужно сгенерировать токен для нашего бота. Токен понадобится для доступа к API Telegram’а, и установки необходимых зависимостей.

1. Создаём нового бота в BotFather

Если вы задумали создавать бота для Telegram, сначала его нужно зарегистрировать, перед тем как использовать. Когда вы регистрируете бота, вы получаете токен для доступа к API Telegram’а

Перейдите по ссылке BotFather (у вас должно быть установлено приложение Telegram) и создайте нового бота, отправив команду /newbot . Следуйте инструкциям, пока не получите имя пользователя и токен для вашего бота. Ссылка для доступа к боту выглядит так: https://telegram.me/YOUR_BOT_USERNAME , а токен вот так:

704418931:AAEtcZ*************

2. Устанавливаем библиотеку

Команда для установки библиотеки:

pip3 install python-telegram-bot

Если всё прошло гладко, то можно двигаться дальше.

Пишем программу

Наш бот должен возвращать изображение с пёсиком, когда мы отправляем команду /bop . Генерировать случайные изображения, нам поможет публичным API от RandomDog.

Рабочий процесс нашего бота очень прост:

запрос к API -> получить URL изображение -> отправить изображение

1. Импорт библиотек

Для начала импортируем все нужные библиотеки.

from telegram.ext import Updater, CommandHandler import requests import re

2. Доступ к API и получение URL изображения

Давайте создадим функцию для получения URL. Используя библиотеку запросов, мы можем обратится к API и получить json данные.

contents = requests.get(‘https://random.dog/woof.json’).json()

Проверить json данные можно в браузере по ссылке https://random.dog/woof.json . Вы увидите что-то вроде этого:

Получаем URL, чтобы иметь возможность отправить изображение:

image_url = contents[‘url’]

Оформим этот код в виде функции get_url() .

def get_url(): contents = requests.get(‘https://random.dog/woof.json’).json() url = contents[‘url’] return url

3. Отправляем картинку

Чтобы отправить сообщение/изображение, нам понадобится два параметра: URL изображения и ID получателя — это может быть ID группы или ID пользователя.

Получить URL изображения можно вызвав функцию get_url() .

url = get_url()

Чтобы получить ID получателя, используйте этот код:

chat_id = update.message.chat_id

После того как мы получили URL изображения и ID получателя, пришло время отправить сообщение, т.е. изображение.

bot.send_photo(chat_id=chat_id, photo=url)

Оберните код в функцию bop и убедитесь, что код выглядит следующим образом:

def bop(bot, update): url = get_url() chat_id = update.message.chat_id bot.send_photo(chat_id=chat_id, photo=url)

4. Основная программа

И наконец, создайте ещё одну функцию с именем main , чтобы запускать программу. Не забудьте заменить YOUR_TOKEN на токен, который вы сгенерировали ранее.

Еще по теме:  После обновления Телеграмм пропали уведомления

def main(): updater = Updater(‘YOUR_TOKEN’) dp = updater.dispatcher dp.add_handler(CommandHandler(‘bop’,bop)) updater.start_polling() updater.idle() if name == ‘__main__’: main()

В итоге, ваш код должен выглядеть вот так:

from telegram.ext import Updater, InlineQueryHandler, CommandHandler import requests import re def get_url(): contents = requests.get(‘https://random.dog/woof.json’).json() url = contents[‘url’] return url def bop(bot, update): url = get_url() chat_id = update.message.chat_id bot.send_photo(chat_id=chat_id, photo=url) def main(): updater = Updater(‘YOUR_TOKEN’) dp = updater.dispatcher dp.add_handler(CommandHandler(‘bop’,bop)) updater.start_polling() updater.idle() if __name__ == ‘__main__’: main()

5. Запуск программы

Отлично! Мы почти закончили.

Давайте проверим работу программы. Сохраните файл и назовите его main.py . Теперь её можно запускать, командой:

python3 main.py

Запустите бота перейдя по ссылке https://telegram.me/YOUR_BOT_USERNAME . Отправьте команду /bop . Если всё работает как надо, вы увидите случайное изображение с пёсиком. Миленько.

Исправляем ошибки

Отлично! Теперь у вас есть работающий бот.

Есть ещё кое-что. API RandomDog генерирует не только изображения, но ещё видео и гифки. Мы не сможем получить видео или GIF от API, потому что произойдёт ошибка.

Давайте это исправим, чтобы бот отправлял нам только изображения. Если нам попадётся видео или GIF, мы снова будем вызывать API, пока не получим изображение.

1. Проверяем расширение файла с помощью регулярного выражения

Чтобы решить эту проблемы, мы будем использовать регулярное выражение.

Отличить изображение от видео или GIF, можно по расширению файла. Нам понадобится последняя часть URL.

https://random.dog/*****.JPG

Во-первых, необходимо определить, какие расширения файлов допускаются в нашей программе.

allowed_extension = [‘jpg’,’jpeg’,’png’]

Затем использовать регулярное выражение, чтобы извлечь расширение файла из URL.

file_extension = re.search(«([^.]*)$»,url).group(1).lower()

Создайте функцию get_image_url() , используя этот код. Она будет перебирать URL, пока вы не получите файл с подходящим расширением (jpg, jpeg, png).

def get_image_url(): allowed_extension = [‘jpg’,’jpeg’,’png’] file_extension = » while file_extension not in allowed_extension: url = get_url() file_extension = re.search(«([^.]*)$»,url).group(1).lower() return url

2. Модифицируем код

Отлично! Теперь нам осталось заменить строку url = get_url() в функции bop() на url = get_image_url() . Ваш код должен выглядеть так:

from telegram.ext import Updater, InlineQueryHandler, CommandHandler import requests import re def get_url(): contents = requests.get(‘https://random.dog/woof.json’).json() url = contents[‘url’] return url def get_image_url(): allowed_extension = [‘jpg’,’jpeg’,’png’] file_extension = » while file_extension not in allowed_extension: url = get_url() file_extension = re.search(«([^.]*)$»,url).group(1).lower() return url def bop(bot, update): url = get_image_url() chat_id = update.message.chat_id bot.send_photo(chat_id=chat_id, photo=url) def main(): updater = Updater(‘YOUR_TOKEN’) dp = updater.dispatcher dp.add_handler(CommandHandler(‘bop’,bop)) updater.start_polling() updater.idle() if __name__ == ‘__main__’: main()

Всё должно работать идеально. Этот код можно найти на моём GitHub.

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

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

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