跨境电商卖家如何创建一个非常简单但实用的Telegram电报机器人?
在这篇文章中,我们(公众号:耀阳会跨境电商)将学习如何使用 Python 和 Telethon 库开发一个电报机器人:
在开始编写实际代码之前,您需要在 Telegram API 中注册为开发者。为此,请访问 https://core.telegram.org/api/obtaining_api_id 并按照步骤获取您的 api_id 和 api_hash。您需要一个电话号码和在您的设备上安装的 Telegram 才能收到确认码。在此过程中,您还将被要求输入一些关于您计划开发的应用程序的详细信息。
然后打开 Telegram 应用程序,搜索 @BotFather 并开始聊天。输入:/newbot,它会要求您输入您的姓名和用户名。输入这些信息后,您将获得机器人的访问令牌。
步骤2:设置
使用 Python 进行软件开发时,一种基本的方法是在您的机器上安装 Python,通过终端安装所有需要的库,将所有代码写入一个 .py 文件,并在终端中运行您的 Python 程序。
这对于简单的 Python 脚本项目来说是可行的。但在复杂的软件开发项目中,比如构建一个 Python 库、一个 API 或一个软件开发工具包,您通常需要处理多个文件、多个包和依赖项。因此,您需要为该特定项目隔离您的 Python 开发环境。
那么,什么是虚拟环境?耀阳会(微信:yaoyanghui6)查阅Python 的官方文档,他们是这么注释的:
“虚拟环境是一个 Python 环境,其中安装的 Python 解释器、库和脚本与安装在其他虚拟环境中的 Python 解释器、库和脚本隔离,并且(默认情况下)与安装在“系统”Python 中的任何库隔离,即作为操作系统的一部分安装的 Python。”
Virtualenv 是一个用于设置 Python 环境的工具。自 Python 3.3 以来,它的一部分已被集成到标准库中,名为 venv 模块。您可以通过在终端中运行以下命令将 venv 安装到您的主机 Python:
pip install virtualenv
要在您的项目中使用 venv,请在您的终端中创建一个新的项目文件夹,在您的终端中 cd 到项目文件夹,并运行以下命令:
python<version> -m venv <virtual-environment-name>
比如这样:
mkdir BotApp
cd BotApp
python3.8 -m venv env
当您检查新的 BotApp 文件夹时,您会注意到已经创建了一个名为 env 的新文件夹。env 是我们虚拟环境的名称,但您可以将其命名为您想要的任何名称。
如何激活虚拟环境?
现在您已经创建了虚拟环境,在您可以在项目中使用它之前,您需要激活它。在 Mac 或 Linux 上,要激活您的虚拟环境,请运行以下代码:
source env/bin/activate
这将激活您的虚拟环境。您会立即注意到您的终端路径中包含 env,表示虚拟环境已激活。
请注意,要在 Windows 上激活您的虚拟环境,您需要运行以下代码:
env/Scripts/activate.bat //在 CMD 中
env/Scripts/Activate.ps1 //在 Powershell 中
一旦我们创建并激活了虚拟环境,我们就可以安装我们的库了。
要安装 Telethon,只需执行以下操作:
pip3 install telethon
步骤3:编码
我们(微信:yaoyanghui6)将要做的第一件事是创建一个名为 start.py 的文件,然后在其中初始化我们(公众号:耀阳会跨境电商)的 Telegram 客户端。这个类将成为您与 Telegram API 的主要接口,创建一个非常简单:
from telethon import TelegramClient, sync
在这里使用您从步骤 1 获得的自己的值
api_id = 12345
api_hash = '0123456789abcdef0123456789abcdef'
bot_token = ''
client = TelegramClient('session_name_file', api_id, api_hash)
请注意,'session_name_file' 将用于将您的会话(如访问密钥和其他信息)保存为磁盘中的 'session_name_file.session'。
默认情况下,这是一个使用 Python 的 sqlite 数据库文件
在初始化机器人后,我们可以监听聊天中发生的任何事件。例如,当标题/描述被更改时,我们会收到一个 ChatAction 事件。在这个例子中,我们将监听群组中的任何传入消息,并用消息 ID 和发送者姓名进行回复。首先,我们需要创建一个负责处理这种特定事件的处理程序。
@client.on(events.NewMessage())
async def readMessages(event):
复制
# 首先我们获取用户信息user = await client.get_entity(event.peer_id.user_id)id = user.idname = user.first_namelastName = user.last_name
username = user.username
复制
# 然后我们构建我们想要回复的消息:respondMessage = "Message sender: %s @%s, with id: %s"%( name + ' ' + lastName if lastName is not None else name, username, id )# 然后我们通过回复收到的消息来发送回消息await event.reply(respondMessage)
使用注释 @client.on(events.NewMessage()) 我们告诉 bot 实例在新的消息事件上向我们的客户端注册一个事件侦听器。
一旦您准备好一个客户端,只需 .start() 即可:
client.start(bot_token='bot_token')
这行代码连接到 Telegram,检查当前用户是否被授权,如果不是,它将开始登录或注册过程。
当您完成您的代码时,您应该总是断开连接:
client = TelegramClient(...)
try:
复制
client.start(bot_token='bot_token')# 在控制台中创建一个日志或打印一条消息,指示机器人已启动。
finally:
复制
client.disconnect()# 在控制台中创建一个日志或打印一条消息,指示机器人已停止。
整个脚本看起来像这样:
from telethon import TelegramClient, sync
在这里使用您从步骤 1 获得的自己的值
api_id = 12345
api_hash = '0123456789abcdef0123456789abcdef'
bot_token = '0123456789:AbCdeFGHIjklMnoPQRstUvWXYz'
client = TelegramClient('session_name_file', api_id, api_hash)
请注意,'session_name_file' 将用于将您的会话(如访问密钥和其他信息)保存为磁盘中的 'session_name_file.session'。
默认情况下,这是一个使用 Python 的 sqlite 数据库文件
@client.on(events.NewMessage())
async def readMessages(event):
ini
复制
# 首先我们获取用户信息user = await client.get_entity(event.peer_id.user_id)id = user.idname = user.first_namelastName = user.last_nameusername = user.username# 然后我们构建我们想要回复的消息:respondMessage = "Message sender: %s @%s, with id: %s"%( name + ' ' + lastName if lastName is not None else name, username, id )# 然后我们通过回复收到的消息来发送回消息await event.reply(respondMessage)
try:
复制
client.start(bot_token='bot_token')# 在控制台中创建一个日志或打印一条消息,指示机器人已启动。
finally:
复制
client.disconnect()# 在控制台中创建一个日志或打印一条消息,指示机器人已停止。
然后,我们可以通过调用 python 脚本来运行我们的机器人:
(env)user@computer BotApp % python3 start.py
现在我们的机器人正在运行,我们可以在 Telegram 应用程序中搜索它并开始测试它。
耀阳会(微信:yaoyanghui6)分享在开发纸飞机机器人bot时,可能用到的重要链接如下:
Python 网页:https://www.python.org/
虚拟环境文档:https://virtualenv.pypa.io/en/latest/
Telethon 文档:https://docs.telethon.dev/
PythonTelethonTelegramTelegram BotTelegram Api
有关更多使用Telegram开发海外外贸客户的知识,可点此继续阅读。也欢迎扫描下方二维码加入群讨论交流: