У нас появился канал в Дзене. Перейти можно прямо по ссылке.

Как создать Telegram-бота
Для увлекательных разговоров чат-бот Telergam действительно полезен. В этом уроке мы узнаем, как создать чат-бота Telegram и использовать его для подготовки текстовых сообщений с подробными ответами.
Шаги по созданию бота Telegram
Следуйте приведенным ниже инструкциям, чтобы создать чат-бот Telegram.
Шаг 1:
Откройте свое приложение и в строке поиска введите «BotFather» и нажмите «Запустить».

Шаг 2:
Введите «/newbot».

Шаг 3:
Введите уникальное имя бота.

Шаг 4:
Теперь введите уникальное имя пользователя для своего бота.
Помните: имя пользователя должно заканчиваться на «bot». Например, «Tetris_bot» или «Tetrisbot».
Шаг 5:
После указания уникального имени пользователя вы получите сообщение, подобное приведенному ниже. Оно содержит токен для доступа к HTTP API. Обеспечьте безопасность своего токена и храните его в безопасном месте.

Шаг 6:
Создайте фляжное приложение для ответа веб-перехватчика.
Прежде всего, вам нужно будет установить python и flask на свой компьютер.
pip install Flask
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "<h1>Welcome!</h1>"
if __name__ == '__main__':
app.run(threaded=True)
Запустите этот код, чтобы проверить, правильно ли работает фляжное приложение. Когда вы запустите код, вы получите ссылку на сервер, например «http://127.0.0.1:5000/». Нажмите на эту ссылку, и вы будете перенаправлены на веб-страницу, где увидите ответ «Добро пожаловать!»
Шаг 7:
Скачайте NGROK и введите в нем команду «ngrok http 5000», после выполнения этой команды вы получите ссылки. Из них скопируйте ссылку HTTPS и вставьте ее в свой браузер. Вы увидите ответ «Добро пожаловать!» так же, как и в предыдущем шаге.
Шаг 8:
Теперь вам нужно установить веб-хук для телеграмм-бота. Вы можете сделать это, запустив ссылку в браузере.
https://api.telegram.org/bot<Your Bot Token>/setWebhook?url=<URL, который вы получили от NGROK>
После запуска ссылки в веб-браузере вы получите ответ, показанный на изображении ниже:

Шаг 9:
Теперь нам нужно будет получить ответ JSON от бота на любой текст, который мы пишем боту.
Откройте VS Code, добавьте следующий код и запустите его по той же ссылке Ngrok, по которой вы запускали предыдущий код.
from flask import Flask
from flask import request
from flask import Response
import requests
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
msg = request.get_json()
print(msg)
return Response('ok', status=200)
else:
return "<h1>Welcome!</h1>"
if __name__ == '__main__':
app.run(debug=True)
В BotFather, где вы получаете токен для своего чат-бота Telegram, вы также можете указать URL-адрес для перенаправления на своего бота Telegram.
После этого нажмите Start Bot, чтобы начать чат с ботом. Затем введите любое сообщение, которое вы хотите, например, «тестовый бот» или что угодно.
После написания «тестового бота» вашему боту теперь перейдите к Vscode и загрузите следующий JSON в свой терминал:

Здесь мы видим, что сообщение, которое мы написали боту, мы можем получить на бэкэнде в виде текста.
Шаг 10:
Мы напишем код, чтобы получить ответ на сообщение «Привет» от пользователя, и если вменится что-либо, кроме «привет», тогда ответ сделаем «от веб-перехватчика».
Вы также можете добавить дополнительный параметр в сообщение отправки. Если это нужно, прочитайте документацию.
from flask import Flask
from flask import request
from flask import Response
import requests
TOKEN = "<Your Bot Token>"
app = Flask(__name__)
def parse_message(message):
print("message-->",message)
chat_id = message['message']['chat']['id']
txt = message['message']['text']
print("chat_id-->", chat_id)
print("txt-->", txt)
return chat_id,txt
def tel_send_message(chat_id, text):
url = f'https://api.telegram.org/bot{TOKEN}/sendMessage'
payload = {
'chat_id': chat_id,
'text': text
}
r = requests.post(url,json=payload)
return r
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
msg = request.get_json()
chat_id,txt = parse_message(msg)
if txt == "hi":
tel_send_message(chat_id,"Hello!")
else:
tel_send_message(chat_id,'from webhook')
return Response('ok', status=200)
else:
return "<h1>Welcome!</h1>"
if __name__ == '__main__':
app.run(debug=True)
Мы получим приведенный ниже ответ в Telegram Bot:


Шаг 11:
Теперь мы также можем получить изображение от бота. Добавьте в код функцию отправки изображений.
Для получения дополнительных параметров вы можете следовать документации.
from flask import Flask
from flask import request
from flask import Response
import requests
TOKEN = "<Ваш токен>"
app = Flask(__name__)
def tel_parse_message(message):
print("message-->",message)
try:
chat_id = message['message']['chat']['id']
txt = message['message']['text']
print("chat_id-->", chat_id)
print("txt-->", txt)
return chat_id,txt
except:
print("NO text found-->>")
def tel_send_message(chat_id, text):
url = f'https://api.telegram.org/bot{TOKEN}/sendMessage'
payload = {
'chat_id': chat_id,
'text': text
}
r = requests.post(url,json=payload)
return r
def tel_send_image(chat_id):
url = f'https://api.telegram.org/bot{TOKEN}/sendPhoto'
payload = {
'chat_id': chat_id,
'photo': "https://raw.githubusercontent.com/fbsamples/original-coast-clothing/main/public/styles/male-work.jpg",
'caption': "This is a sample image"
}
r = requests.post(url, json=payload)
return r
@ app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
msg = request.get_json()
try:
chat_id, txt = tel_parse_message(msg)
if txt == "hi":
tel_send_message(chat_id,"Hello, world!")
elif txt == "image":
tel_send_image(chat_id)
else:
tel_send_message(chat_id, 'from webhook')
except:
print("from index-->")
return Response('ok', status=200)
else:
return "<h1>Welcome!</h1>"
if __name__ == '__main__':
app.run(threaded=True)
Вот ответ, который вы получите от telegram-бота:

Шаг 12:
Подобным образом вы можете отправить аудио. Для получения дополнительных параметров вы можете следовать документации.
def tel_send_audio(chat_id):
url = f'https://api.telegram.org/bot{TOKEN}/sendAudio'
payload = {
'chat_id': chat_id,
"audio": "http://www.largesound.com/ashborytour/sound/brobob.mp3",
}
r = requests.post(url, json=payload)
return r
Добавьте этот код в свою индексную функцию:
elif txt == "audio":
tel_send_audio(chat_id)
Вот такой ответ вы получите в Telegram:

Шаг 13:
Нам нужен код для получения файла. Чтобы добавить больше параметров, вы можете следовать документации.
def tel_send_document(chat_id):
url = f'https://api.telegram.org/bot{TOKEN}/sendDocument'
payload = {
'chat_id': chat_id,
"document": "http://www.africau.edu/images/default/sample.pdf",
}
r = requests.post(url, json=payload)
return r
Добавьте этот код в свою индексную функцию:
elif txt == "file":
tel_send_document(chat_id)
Вот такой ответ вы получите в боте:

Шаг 14:
Нам нужен код для получения опроса. Чтобы добавить больше параметров, вы можете следовать документации.
def tel_send_poll(chat_id):
url = f'https://api.telegram.org/bot{TOKEN}/sendPoll'
payload = {
'chat_id': chat_id,
"question": "In which direction does the sun rise?",
"options": json.dumps(["North", "South", "East", "West"]),
"is_anonymous": False,
"type": "quiz",
"correct_option_id": 2
}
r = requests.post(url, json=payload)
return r
Добавьте этот код в свою индексную функцию:
elif txt == "poll":
tel_send_poll(chat_id)
Такой ответ вы получите в мессенджере:

Шаг 15:
Создайте код, чтобы получить кнопку в телеграмм-боте:
def tel_send_button(chat_id):
url = f'https://api.telegram.org/bot{TOKEN}/sendMessage'
payload = {
'chat_id': chat_id,
'text': "What is this?",
'reply_markup': {'keyboard': [[{'text': 'supa'}, {'text': 'mario'}]]}
}
r = requests.post(url, json=payload)
return r
Добавьте этот код в свою индексную функцию:
elif txt == "button":
tel_send_button(chat_id)
Этот ответ будет выведен в чат-боте:

Шаг 16:
Создайте код для получения встроенной кнопки в Telegram:
def tel_send_inlinebutton(chat_id):
url = f'https://api.telegram.org/bot{TOKEN}/sendMessage'
payload = {
'chat_id': chat_id,
'text': "What is this?",
'reply_markup': {
"inline_keyboard": [[
{
"text": "A",
"callback_data": "ic_A"
},
{
"text": "B",
"callback_data": "ic_B"
}]
]
}
}
r = requests.post(url, json=payload)
return r
Напишите код в индексную функцию:
elif txt == "inline":
tel_send_inlinebutton(chat_id)
В Telegram вы получите следующий ответ:

Мы узнали, как получить текстовый ответ от бота, а также различные типы файлов. После этого мы также увидели, как мы можем получить файлы, которые мы отправляем боту на стороне нашего сервера.
Теперь вы можете заставить своего бота работать так, как вам хочется, — идите вперед и создайте следующую большую вещь!
Надеюсь, вам понравилось создавать своего первого бота Telegram. Если вы столкнулись с какими-либо трудностями, сообщите нам об этом в комментарии.