如何使用Python构建Telegram机器人来生成随机引语

1,275 阅读4分钟

使用Python构建Telegram机器人以生成随机引语

聊天机器人是用于进行在线聊天对话的软件应用程序,通过文本或文本转语音的方式实现客户服务的自动化。[聊天机器人]可以用于提醒、预约等事情,也可以在社交媒体平台上使用。

在本教程中,我们将建立一个简单的Telegram机器人,使用Python每隔一段时间向Telegram组发送自动编程报价。

[Telegram]是一个[免费的、开源的]、跨平台的、基于云的即时通讯(IM)软件。它提供视频通话和文件共享等功能。

前提条件

要跟上本教程,你需要在你的机器上安装Python 3,而且,对Python有一点了解将有助于读者更好地跟上。

设置机器人配置文件

要设置一个新的机器人,我们需要在使用它之前先注册我们的机器人。这样,我们就能得到访问Telegram API的令牌。

点击Telegram的搜索图标,然后,在搜索栏中输入@botfather

BotFather是Telegram创建的官方机器人,以方便创建机器人。

BotFather 在Telegram中创建Bot father

现在,点击开始按钮,开始对话。你应该得到以下界面。

start conversation 开始与Bot father的对话

输入/start 来开始。

接下来,我们通过运行/newbot 命令来创建这个机器人。

create 创建新的机器人

接下来,我们为机器人输入我们喜欢的名字和用户名。

BothFather 选择机器人名称

现在,我们复制我们的访问令牌并将其保存在某个地方。记住要妥善保护访问令牌,因为它是你的机器人密码。

编码机器人

我们首先创建一个新的目录,并导航到它。

接下来,我们创建一个虚拟环境。

一个虚拟环境允许你在你的电脑上创建不同的空间,有不同的库和版本。

通过创建一个虚拟环境,你将能够为一个项目分开安装必要的库,而不需要全局安装它们。

现在,通过运行下面的命令创建一个虚拟环境env

python -m venv env

创建后,用下面的命令激活虚拟环境。

source env/bin/activate

接下来,我们需要创建一个Telegram组,并将我们的Bot添加为成员。

Add bot to group 为机器人添加成员

接下来,我们需要获得聊天ID,我们可以通过在Telegram组中发送此命令来实现。

/my_id BOT_NAME

之后,我们需要在浏览器中打开下面的URL,以获得我们的聊天ID。

https://api.telegram.org/botBOT_TOKEN/getUpdates

BOT_TOKEN = the token we copied earlier

这将返回一个JSON响应,类似于一个包含我们聊天ID的python字典。

json 包含聊天ID的JSON

现在,我们创建一个名为bot.py 的新的python文件,并在其中添加以下几行代码。

import requests
import time

# list of quotes
quotes = [
    'First, solve the problem. Then, write the code. – John Johnson',
    'Experience is the name everyone gives to their mistakes. – Oscar Wilde',
    'Code is like humor. When you have to explain it, it’s bad. – Cory House',
    'Before software can be reusable it first has to be usable. – Ralph Johnson',
    'Optimism is an occupational hazard of programming: feedback is the treatment. - Kent Beck'
]

# loop through the quotes
for quote in quotes:
    url = 'https://api.telegram.org/bot1848805395:AAHaacRzz3vDJ8vrQqVZ4vMPTqY1OBOQ12Q/sendMessage?chat_id=CHAT_ID&text="{}"'.format(quote)
    requests.get(url)
    # sends new quotes every 20seconds
    time.sleep(20)

在测试机器人之前,我们需要使用以下代码安装请求模块。

pip install requests

现在,让我们通过在终端运行我们的Python文件来测试我们的机器人。

python bot.py

programming quotes 每20秒打印一个报价

好哇,它成功了!

让我们通过连接一个为我们提供随机编程报价的API,使我们的机器人更加有趣。

我们将使用这个API,以及/random 端点来获取随机报价。

接下来,我们需要在文件的顶部添加以下几行代码

from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
import json

现在,让我们创建一个发送随机报价的函数,添加以下几行代码。

telegram_bot_token = "TOKEN"

updater = Updater(token=telegram_bot_token, use_context=True)
dispatcher = updater.dispatcher

def random(update, context):
    # fetch data from the api
    response = requests.get('http://quotes.stormconsultancy.co.uk/random.json')
    data = response.json()
    # send message
    context.bot.send_message(chat_id=update.effective_chat.id, text=data['quote']) 

# linking the /random command with the function random() 
quotes_handler = CommandHandler('random', random)
dispatcher.add_handler(quotes_handler)

现在,让我们运行该文件,在我们的Telegram组中输入/random 。我们的机器人应该用一个随机的报价来回应。

random quotes 使用API获取随机报价的机器人

结语

最后,我们已经了解了如何为群组建立Telegram机器人。

你仍然可以用Telegram机器人实现很多东西,比如将你的机器人连接到其他API,并将它们托管在[Heroku]这样的平台上,使你的机器人24/7可用。