像 Telegram 这样的消息传递应用程序提供 API 以便我们创建机器人的情况并不少见。 这种类型的机器人很容易编写,而且用途广泛。 机器人是与在您的家庭服务器上运行的应用程序进行交互的好方法,无需将其直接暴露在互联网上。
观察网站上的变化
最近我要申请签证,要预约你需要去政府网站,不断检查是否有新的名额。 而且您需要快速,因为免费位置不会持续很长时间。
所以我决定编写一个机器人,它每 10 分钟浏览一次表单,并在状态发生变化时立即在 Telegram 上向我发送一条消息。 bot 有两部分,第一部分是与 selenium webdriver 交互的代码,第二部分是通过 Telegram 提醒变化。
首先,下载一个浏览器驱动:
然后我使用了一个名为 Splinter 的库,它抽象了与驱动程序的交互。
from splinter import Browserwith Browser() as browser:
# Visit URL.
browser.visit("http://www.google.com") # Find and fill out the search form.
browser.find_by_name('q').fill('splinter') # Find and click the 'search' button.
button = browser.find_by_name('btnK').click() # Check for result on the page.
if browser.is_text_present('splinter.readthedocs.io'):
print("Yes, the official website was found!")
else:
print("No, it wasn't found...")
要运行代码,首先启动您在第一步下载的驱动程序,然后运行 python 应用程序。
使用电报发送警报
现在我们有了一个在网站上查找更改的脚本,我们需要一种发送通知的方法。 要创建 Telegram 机器人,首先您需要一个令牌,并且只需向 BotFather 索取令牌即可。
向机器人发送命令 /newbot,机器人会要求您为机器人命名,然后它会为您提供令牌。
在这里,我将 python-telegram-bot 库包装在一个类中,以便在需要时更容易更改为另一个解决方案,但您可以跳过此并直接使用该库。
import telegram
class Telegram: def __init__(self, token: str):
self.bot = telegram.Bot(token=token)
self.offset = 0
def send(self, chat_id, message):
self.bot.send_message(chat_id=chat_id, text=message)
找出chat_id
https://api.telegram.org/bot/getUpdates
例子:
https://api.telegram.org/bot123456789:jbd78sadvbdy63d37gda37bd8/getUpdates
3. 寻找“聊天”对象:
{
"update_id": 8393,
"message": {
"message_id": 3,
"from": {
"id":7474,
"first_name":"AAA"
},
"chat": {
"id":,
"title":""
},
"date":25497,
"new_chat_participant": {
"id":71,
"first_name":"NAME",
"username":"YOUR_BOT_NAME"
}
}
}
与您的树莓派项目交互
由于您可以使用机器人发送消息,因此您也可以接收消息。 这为您的周末项目打开了广泛的可能性。 使用电报作为与您的应用程序通信的桥梁,您无需将它们直接公开到互联网,或处理端口转发和 IP 更改,或动态 DNS 配置。
不久前,我写了一个小机器人,它听命令 /lotto。机器人然后回复一个随机生成的彩票号码。 所以我让机器人在一个 docker 容器上运行,我可以用我的手机与它进行交互。
结论
编写机器人很有趣,你可以用它做各种各样的事情。 这里我以 Telegram 为例,但过去我也使用 Slack bot API 与房屋报警系统进行交互。 我希望这能提供信息,如果您构建了一个很酷的机器人,请与我分享。
关注七爪网,获取更多APP/小程序/网站源码资源!
留言与评论(共有 0 条评论) “” |