Как загрузить бота в Телеграм на python

Как создать Telegram bot на Python основы

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

Также если вас интересует разработка ботов, но на JavaScript, то можете посмотреть статью: «Telegram bot на JavaScript», ещё скажу, что по сути мы будем делать бота из этой статьи, только на Python.

Установка Telegram API:

Для начала нужно скачать нужный API, для создания бота, но перед этим рекомендуется сделать виртуальное окружение, для этого прочитайте статью «Создание Virtual Environments Python».

После того как это сделали скачиваем telegram bot API на Python, это делается как обычно через pip install.

PowerShell
pip install pyTelegramBotAPI

На этом установка закончилась.

Регистрация Telegram бота:

botFather

Пишем TELEGRAM бота на Python

Там пишем команду «/newbot», после вам нужно будет выбрать имя бота, которое будет отображается в списке чатов, потом имя для обращения к чату, которое через знак собаки, после этого получите токен.

Получение токена для API, чтобы создать Telegram bot на Python

Там где замазано, это и есть токен который вы получаете.

Создание Telegram bot на Python:

Теперь перейдём к самому интересному, это к написанию кода, для этого создадим файл где всё будет хранится, я его назову «main.py», в начале в нём делаем импорт и создаём переменную для токена.

# Подключаем Telegram API
import telebot
# Подключаем библиотеку для создания кнопок
from telebot import types
token = ‘Ваш_токен’
# Объявляем бота
bot = telebot . TeleBot ( token )

Здесь мы подключаем API и специальную библиотеку «types», которая нам нужна для создания кнопок к сообщениям, но кроме этого у неё есть и другие возможности.

Потом объявляем переменную для токена, и создаём бота.

Следующие, пишем не большую функцию для создания кнопок.

def create_keyboard ( ) :
# Создаём тип для кнопок
keyboard = types . InlineKeyboardMarkup ( )
# Создаём первую кнопку
drink_btn = types . InlineKeyboardButton ( text = «Хочу пить» , callback_data = «1» )
# Создаём вторую кнопку
eat_btn = types . InlineKeyboardButton ( text = «Хочу есть» , callback_data = «2» )
# Добавляем первую кнопку в специальный список
keyboard . add ( drink_btn )
# Добавляем вторую кнопку в специальный список
keyboard . add ( eat_btn )
# Возвращаем кнопки
return keyboard

Здесь первым делом мы должны сделать специальный массив, для хранения кнопок, используя types.InlineKeyboardMarkup() , потом делаем две кнопки, тут самое интересное, то какие параметры используются при создание, первый, это текст кнопки, а второе, callback_data , то какое значение оно будет возвращать при нажатие.

После через метод add() , добавляем их в массив и возвращаем его. После можно создать функцию, которая будет срабатывать при запуске бота.

# Обозначаем чтобы функция срабатывала при команде /start
# Объявляем функцию
def start_bot ( message ) :
# Создаём кнопки
keyboard = create_keyboard ( )
# Отправляем сообщение пользователю
bot . send_message (
message . chat . id , # Идентификатор ID
«Добрый день, чего хотите?» , # Текст сообщения
reply_markup = keyboard # Кнопки

Первым делом у нас идёт декоратор, который срабатывает при получение команды «/start», которые обозначаются в параметре commands, который является списком и можно обозначить таким образом несколько команд.

Потом создаём функцию для отправки сообщения, в ней первым делом получаем наши кнопки, потом через функцию send_message() , мы отправляем сообщение.

Примечание:

Название функции после декоратора может быть любое, это не имеет значение.

Последняя функция которая осталось сделать, это для получения значений их кнопки, она делается точно таким же способом.

# Декоратор который означает для получения каких-то значений
# Создаём функцию
def callback_inline ( call ) :
# Делаем кнопки
keyboard = create_keyboard ( )
# Проверяем есть ли сообщение
if call . message :
# Если значение кнопки равно одному то
if call . data == «1» :
# Открываем картинку с водой
img = open ( ‘calm-2315559_640.jpg’ , ‘rb’ )
# Отправляем картинку
bot . send_photo (
chat_id = call . message . chat . id , # Идентификатор чата
photo = img , # Картинка
caption = «Вот вам вода? ещё чего-нибудь хотите?» , # Текст к картинки
reply_markup = keyboard # Кнопки
# Закрываем картинку
img . close ( )
elif call . data == «2» : Если значение равно двум то
# Открываем картинку с блинчиками
img = open ( ‘pancakes-2020863_640.jpg’ , ‘rb’ )
# Отправляем картинку
bot . send_photo (
chat_id = call . message . chat . id , # Идентификатор чата
photo = img , # Картинка
caption = «Вот вам вода? ещё чего-нибудь хотите?» , # Текст к картинки
reply_markup = keyboard # Кнопки
# Закрываем картинку
img . close ( )

Еще по теме:  Как узнать с кем общается пользователь Телеграмм

Здесь мы уже в качестве декоратора обозначаем получение информации от кнопок, но это может быть и что-то другое не обязательно кнопки.

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

Если все верно, то открываем картинку и отправляем её с помощью функции send_photo() , тут все такие же параметры как и при отправки обычного сообщения, только есть photo, которому задаём картинку и вместо text , для текста сообщения, используем caption , дальше закрываем картинку.

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

Последние что осталось добавить, это код для запуска бота.

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

Как создать телеграм-бота на Python

Python — самый популярный язык программирования в феврале 2022 года.

телеграм-бот на Python

Виктория Дербенченко
Автор статьи
16 марта 2022 в 14:39

Телеграм используют более пятисот миллионов людей по всему миру. Компании с его помощью упрощают заказ товаров или услуг, дают консультации. Для этого используют ботов — автоматические программы. Их пишут на разных языках программирования. Рассмотрим, как создать бот на самом популярном в феврале 2022 года языке — Python.

Установите интерпретатор Python

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

️ Windows

как установить интерпретатор Python

Выберите последнюю версию Python

64-bit в интерпретаторе Python

Выберите 64-bit

как установить интерпретатор Python на Windows

Поставьте галочку перед установкой напротив Add Python to PATH

pip install virtualenv

❗ Вызов интерпретатора в командной строке Windows отличается от других ОС. Используйте команду py вместо python3.

️ Linux

Если вы используете ОС Linux, вероятно, Python уже установлен. Чтобы проверить, откройте терминал с помощью команды:

python3 —version

Если вы видите что-то вроде Python 3.x.x, то Python есть. В противном случае используйте установленный менеджер пакетов. В основном это apt. Введите команду:

sudo apt install python3

Установите виртуальное окружение с помощью команды:

sudo apt install python3-venv

️ MacOS

На макбуках Python часто тоже уже есть. Откройте терминал и проверьте с помощью команды:

python3 —version

Ответ Python 3.x.x, а не ошибка, тоже подтверждает, что Python установлен. Если нет — используйте менеджер пакетов brew. Введите команду:

brew install python3

Установите пакет для создания виртуального окружения:

pip install virtualenv

Создайте папки проекта и виртуального окружения

Откройте терминал Linux или MacOS, командную строку Windows. Перейдите в директорию, в которой вы хотите создать проект бота. Последовательно

mkdir myBot cd myBot python3 -m venv env #

или, если вы используете Windows:

py -m venv env #

Эти команды создадут папку проекта myBot внутри текущей рабочей директории. А в ней — папку с виртуальным окружением.

Активируйте окружение, выберите и установите библиотеки

Pandas: обзор библиотеки для Python

Чтобы активировать виртуальное окружение на MacOS или Linux, используйте команду

source ./env/bin/activate
source.envbinactivate.bat

Чтобы создавать боты, используют разные библиотеки. Самые популярные: python-telegram-bot с синхронным подходом, aiogram с асинхронным.

Асинхронность позволяет отвлекаться от задач и не ждать ввода от пользователя, поэтому мы будем использовать библиотеку aiogram. Документация по ней — на docs.aiogram.

Используйте менеджер Python-пакетов (pip). Чтобы установить библиотеку aiogram, введите команду:

pip install aiogram

Зарегистрируйте бота и получите API-ключ

как добавить нового бота в телеграм

как зарегистрировать бота в телеграме

Введите команду /newbot и отображаемое имя бота

Теперь введите никнейм бота. Он должен быть уникальным, в конце обязательно слово bot. Когда юзернейм пройдет валидацию, вы получите сообщение с API-ключом.

валидация бота в телеграм

Никому не сообщайте полученный токен

Примеры ботов

Эхобот

Для начала в папке проекта создайте несколько файлов.

как создать эхобота

Handlers.py будет хранить функции — обработчики сообщений и команд, main.py нужен для запуска

Напишите в main.py код:

from aiogram import Bot, Dispatcher, executor import handlers API_TOKEN = ‘вставьте сюда ваш токен’ # создаем экземпляры бота и диспетчера bot = Bot(token=API_TOKEN) dp = Dispatcher(bot) # запускаем программу if __name__ == ‘__main__’: # указание skip_updates=True # пропустит команды, # которые отправили # до старта бота executor.start_polling(dp, skip_updates=True)
from aiogram import Bot, Dispatcher, executor import handlers

Еще по теме:  Изменения владельца в Телеграмме

Здесь из библиотеки aiogram мы импортируем классы Bot, Dispatcher — класс, который регистрирует, на какие команды/сообщения и какой функцией отвечать. И executor — он запускает бота и выполняет функции, зарегистрированные в диспетчере. На второй строке мы импортируем модуль handlers.py — в нём хранят обработчики.

Далее откройте файл handlers.py и напишите в нём пару команд, которые будут обрабатывать запросы:

from aiogram import types # функция, обрабатывающая команду /start async def start(message: types.Message): await message.answer(«Привет!nНапиши мне что-нибудь!») # функция, которая отвечает на сообщение # текстом async def echo(message: types.Message): await message.answer(«Сам ты: » + message.text)

Здесь из модуля aiogram импортируем типы, с помощью которых преобразуем текст сообщения или файлы в структуру данных. Это может быть Message — сообщение, Audio — аудиозапись, Animation — анимация.

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

Зарегистрируйте эти функции в диспетчере. Для этого в файле main.py добавьте перед запуском программы:

# регистрируем функции dp.register_message_handler(h.start, commands=[«start»]) dp.register_message_handler(h.echo)

В итоге файл main.py выглядит так:

from aiogram import Bot, Dispatcher, executor import handlers API_TOKEN = ‘вставьте сюда ваш токен’ # создаем бота и диспетчер bot = Bot(token=API_TOKEN) dp = Dispatcher(bot) # регистрируем функции dp.register_message_handler(handlers.start, commands=[«start»]) dp.register_message_handler(handlers.echo) # запускаем программу if __name__ == ‘__main__’: # указание skip_updates=True # пропустит команды, # которые отправили # до старта бота executor.start_polling(dp, skip_updates=True)

ка запустить Эхобот в телеграме

Чтобы проверить работу, введите в терминале python3 main.py или py main.py на Windows. Откройте бота в телеграме и запустите его

Криптобот

Чтобы написать криптобота, который будет сообщать текущую цену BTC, LTC и DASH, используйте бесплатный API-сервис SoChain. Еще потребуется дополнительная библиотека, чтобы создать асинхронные запросы aiohttp, но ее устанавливают вместе с aiogram.

Создайте новый модуль utils.py. Добавьте в него url-адрес API-сервиса. Чтобы узнавать цену, используйте метод Get Prices. Он возвращает json-объект с данными о цене из нескольких источников. Поэтому напишите функцию, которая вычисляет среднее значение:

BASE_URL = «https://sochain.com/api/v2/» # API URL # функция, чтобы рассчитать цену def calculate_price(data): prices = [float(entity[«price»]) for entity in data[«data»][«prices»]] return f» <(sum(prices) / len(prices)):.2f>USD»

Далее откройте файл handlers.py и напишите код:

from aiogram import types # импортируем библиотеку aiohttp import aiohttp # импортируем из utils все данные from utils import * # обработчик команды /start async def start(message: types.Message): await message.answer(«Привет!nНапиши мне акроним криптовалюты, чтобы узнать текущую цену») # обработчик команды /help async def help(message: types.Message): await message.answer(«Доступные сети:n» + «n».join(networks)) # обработчик запроса цены async def get_price(message: types.Message): session = aiohttp.ClientSession() # создаем GET запрос по закрепленному за методом get_price url async with session.get(BASE_URL + f»get_price//USD») as resp: # получаем ответ в формате json data = await resp.json() # если статус запроса — успешно if data[«status»] == «success»: # рассчитываем цену и отправляем пользователю price = calculate_price(data) await message.answer(price) else: # сообщаем о том, что произошла ошибка await message.answer(«Произошла ошибка»)

Теперь измените main.py файл: зарегистрируйте функции. Затем протестируйте бота:

from aiogram import Bot, Dispatcher, executor import handlers API_TOKEN = ‘вставьте сюда ваш токен’ bot = Bot(token=API_TOKEN) dp = Dispatcher(bot) dp.register_message_handler(handlers.start, commands=[«start»]) dp.register_message_handler(handlers.help, commands=[«help»]) dp.register_message_handler(handlers.get_price) if __name__ == ‘__main__’: executor.start_polling(dp, skip_updates=True)

как запустить криптобота в телегараме

Когда пользователь укажет неподдерживаемую сеть ETH, бот вернет цену биткоина, потому что так устроен API-сервис. Если он не распознал сеть, то использует BTC

Чтобы исправить ошибку, создайте клавиатуру, которая возвращает нужные значения. Напишите специальный класс Middleware: в нём описываются проверки до и после обработки запроса. Либо проверьте вхождение внутри функции. Последний вариант проще и легче.

Если пользователь отправит неподдерживаемый акроним криптосети, вы сообщите ему об этом. Для этого в файле utils.py определите список поддерживаемых сетей:

networks = [«BTC», «LTC», «DASH»] # <— поддерживаемые сети BASE_URL = «https://sochain.com/api/v2/» # API URL def calculate_price(data): prices = [float(entity[«price»]) for entity in data[«data»][«prices»]] return f» <(sum(prices) / len(prices)):.2f>USD»

Теперь отредактируйте функцию расчета цены криптовалюты в файле handlers.py. Для этого добавьте проверку вхождения сети в список поддерживаемых:

async def get_price(message: types.Message): network = message.text.upper() # приводим сообщение к верхнему регистру # выполняем проверку вхождения if network not in networks: await message.answer(«Вы указали неподдерживаемую криптовалюту») return session = aiohttp.ClientSession() async with session.get(BASE_URL + f»get_price//USD») as resp: data = await resp.json() if data[«status»] == «success»: price = calculate_price(data) await message.answer(price) else: await message.answer(«Произошла ошибка»)

Когда пользователь укажет неподдерживаемую сеть ETH, бот сообщит об этом

Код всех файлов

networks = [«BTC», «LTC», «DASH»] # поддерживаемые сети BASE_URL = «https://sochain.com/api/v2/» # API URL def calculate_price(data): prices = [float(entity[«price»]) for entity in data[«data»][«prices»]] return f» <(sum(prices) / len(prices)):.2f>USD»
import aiohttp from aiogram import types from utils import * async def start(message: types.Message): await message.answer(«Привет!nНапиши мне акроним криптовалюты, чтобы узнать текущую цену») async def help(message: types.Message): await message.answer(«Доступные сети:n» + «n».join(networks)) async def get_price(message: types.Message): network = message.text.upper() if network not in networks: await message.answer(«Вы указали неподдерживаемую криптовалюту») return session = aiohttp.ClientSession() async with session.get(BASE_URL + f»get_price//USD») as resp: data = await resp.json() if data[«status»] == «success»: price = calculate_price(data) await message.answer(price) else: await message.answer(«Произошла ошибка»)
from aiogram import Bot, Dispatcher, executor import handlers API_TOKEN = ‘вставьте сюда ваш токен’ bot = Bot(token=API_TOKEN) dp = Dispatcher(bot) dp.register_message_handler(handlers.start, commands=[«start»]) dp.register_message_handler(handlers.help, commands=[«help»]) dp.register_message_handler(handlers.get_price) if __name__ == ‘__main__’: executor.start_polling(dp, skip_updates=True)

Еще по теме:  Если удалить Телеграмм что видят пользователи

Источник: sky.pro

Пишем Telegram бота на Python

Пишем Telegram бота на Python

Часть 2: Подготовка к написанию кода

Как уже упоминалось в заголовке, мы будем создавать бота на Python. В этой статье мы рассмотрим использование библиотеки PyTelegramBotAPI (Telebot). Если вы еще не установили Python, то необходимо сделать это. В терминале Linux для установки Python нужно ввести…

sudo apt-get install python python-pip

Если вы используете операционную систему Windows, вам нужно скачать Python с официального сайта.

Затем, в случае использования Linux, откройте терминал, а для Windows — командную строку, и введите…

pip install pytelegrambotapi
Теперь можно приступить к написанию кода, так как все готово.

Часть 3: Получаем сообщения и говорим «Привет»

Откройте свой предпочитаемый текстовый редактор и начните писать код для создания бота! Вначале необходимо импортировать нашу библиотеку и подключить токен бота:

import telebot; bot = telebot.TeleBot(‘%ваш токен%’);

Теперь создадим функцию для получения текстовых сообщений:

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

Код будет реагировать на текстовые сообщения, документы и аудио. Дополнительную информацию можно найти в официальной документации.

Теперь добавим некоторый функционал в наш метод: если пользователь отправит сообщение «Привет», то мы отправим ему ответ «Привет, чем я могу вам помочь?», а если пользователь отправит команду «/help», то мы попросим его отправить сообщение «Привет»:

if message.text == «Привет»: bot.send_message(message.from_user.id, «Привет, чем я могу тебе помочь?») elif message.text == «/help»: bot.send_message(message.from_user.id, «Напиши привет») else: bot.send_message(message.from_user.id, «Я тебя не понимаю. Напиши /help.»)

По-моему, этот фрагмент кода не нуждается в комментариях. Теперь вам нужно добавить всего одну строку кода (вне всех методов) в наш скрипт

bot.polling(none_stop=True, interval=0)

Теперь наш бот будет постоянно проверять у сервера Telegram, есть ли новые сообщения для нашего бота. Если мы отправим сообщение нашему боту, Telegram передаст его боту. Сохраните файл, и запустите его в консоли.

python bot.py

Где bot.py – имя нашего файла.

Теперь вы можете отправить сообщение боту и посмотреть на результат.

Часть 4: Кнопки и ветки сообщений

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

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

def get_age(message): global age; while age == 0: #проверяем что возраст изменился try: age = int(message.text) #проверяем, что возраст введен корректно except Exception: bot.send_message(message.from_user.id, ‘Цифрами, пожалуйста’); keyboard = types.InlineKeyboardMarkup(); #наша клавиатура key_yes = types.InlineKeyboardButton(text=’Да’, callback_data=’yes’); #кнопка «Да» keyboard.add(key_yes); #добавляем кнопку в клавиатуру key_no= types.InlineKeyboardButton(text=’Нет’, callback_data=’no’); keyboard.add(key_no); question = ‘Тебе ‘+str(age)+’ лет, тебя зовут ‘+name+’ ‘+surname+’?’; bot.send_message(message.from_user.id, text=question, reply_markup=keyboard)

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

Теперь нам нужно добавить одну строку в начало файла:

from telebot import types

Теперь сохраняем и запускаем нашего бота.

Еще один альтернативный вариант создания бота Telegram на Python (Видео инструкция)

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

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