Как создать Telegram-бота

Автоматические чат-боты весьма полезны для стимулирования взаимодействия. Мы можем создавать чат-ботов для Slack, Discord и других платформ.
Поделитесь с друзьями

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


Шаги по созданию бота Telegram

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

Шаг 1:

Откройте свое приложение и в строке поиска введите «BotFather» и нажмите «Запустить».

Шаг 2:

Введите «/newbot».

telegram

Шаг 3:

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

Шаг 4:

Теперь введите уникальное имя пользователя для своего бота.

Помните: имя пользователя должно заканчиваться на «bot». Например, «Tetris_bot» или «Tetrisbot».

Шаг 5:

После указания уникального имени пользователя вы получите сообщение, подобное приведенному ниже. Оно содержит токен для доступа к HTTP API. Обеспечьте безопасность своего токена и храните его в безопасном месте.

telegram

Шаг 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 в свой терминал:

telegram

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

Шаг 10:

Мы напишем код, чтобы получить ответ на сообщение «Привет» от пользователя, и если вменится что-либо, кроме «привет», тогда ответ сделаем «от веб-перехватчика».
Вы также можете добавить дополнительный параметр в сообщение отправки. Если это нужно, прочитайте документацию.

TOKEN = "
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:

Telegram

Шаг 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-бота:

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:

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)

Вот такой ответ вы получите в боте:

telergram

Шаг 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)

Этот ответ будет выведен в чат-боте:

telegram

Шаг 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 вы получите следующий ответ:

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

Читайте также:  Команды Linux, которые должен знать каждый [+ Шпаргалка]

Теперь вы можете заставить своего бота работать так, как вам хочется, — идите вперед и создайте следующую большую вещь! 

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

Команда SYSTEMLOG
Команда SYSTEMLOG

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *