Skip to main content

创建您自己的信号机器人的框架

项目描述

信号机器人框架

用于构建您自己的 Signal 机器人的 Python 包。要运行机器人,您需要启动signal-cli-rest-api服务并将您的设备与其链接。有关详细信息,请参阅该项目。API 服务器必须在json-rpc模式下运行。

入门

请参阅https://github.com/filipre/signalbot-example了解如何使用该软件包以及如何构建一个简单的机器人的示例。

类和 API

文档工作正在进行中。随时提出问题。

该包提供了轻松侦听传入消息并对其做出响应或反应的方法。它还提供了一个类来开发新命令,然后可以在机器人中注册。

信号机器人

  • bot.listen(group_id, internal_id):收听群聊中的消息。group_id必须以group.
  • bot.listen(phone_number):收听用户聊天中的消息。
  • bot.register(command): 注册一个新命令
  • bot.start(): 启动机器人
  • bot.send(receiver, text, listen=False): 发送新消息
  • bot.react(message, emoji): 对消息做出反应
  • bot.start_typing(receiver): 开始打字
  • bot.stop_typing(receiver): 停止输入
  • bot.scheduler:APScheduler > AsyncIOScheduler,见这里
  • bot.storage: In-memory 或 Redis stroage,见storage.py

命令

要实现自己的命令,您需要固有Command并覆盖以下方法:

  • setup(self):启动任何需要发送消息的任务,可选
  • describe(self): 描述你的命令的字符串,可选
  • handle(self, c: Context):处理传入的消息。默认情况下,任何命令都会读取任何传入的消息。Context可用于轻松回复 ( c.send(text))、反应 ( c.react(emoji)) 和输入组 ( c.start_typing()and c.stop_typing())。您可以使用@triggered装饰器来侦听特定命令,也可以检查c.message.text.

单元测试

在很多情况下,我们可以模拟接收和发送消息以加快开发时间。为此,您可以使用signalbot.utils.ChatTestCasewhich 设置“骨架”机器人。@chat然后,您可以像这样使用装饰器发送消息signalbot.utils

class PingChatTest(ChatTestCase):
    def setUp(self):
        # initialize self.singal_bot
        super().setUp()
        # all that is left to do is to register the commands that you want to test
        self.signal_bot.register(PingCommand())

    @chat("ping", "ping")
    async def test_ping(self, query, replies, reactions):
        self.assertEqual(replies.call_count, 2)
        for recipient, message in replies.results():
            self.assertEqual(recipient, ChatTestCase.group_secret)
            self.assertEqual(message, "pong")

signalbot.utils,查看ReceiveMessagesMockSendMessagesMockReactMessageMock了解有关他们的 API 的更多信息。

故障排除

  • 检查您是否已成功关联您的帐户
  • API 服务器是否在json-rpc模式下运行?
  • 您可以使用(websockets)接收消息并使用(http)wscat发送消息吗?curl
  • 您是否在 API 日志中看到传入消息?
  • 您是否在机器人的日志中看到“原始”消息?
  • 您是否看到“消费者”接手工作并处理传入消息?
  • 您在机器人的日志中看到响应了吗?

本地开发和打包

部分工作正在进行中。随时提出问题。

poetry install
poetry run pre-commit install

其他的项目

还有一些与此类似的其他相关项目。您可能需要检查它们,看看它是否符合您的需求。

项目 描述 地位
https://github.com/signalapp/libsignal-service-java 信号库 爪哇 最后更改 2019 年 11 月 12 日
https://github.com/AsamK/signal-cli Signal 的 CLI 和 D-Bus 接口 爪哇 活跃,建立在https://github.com/signalapp/libsignal-service-java之上
https://github.com/bbernhard/signal-cli-rest-api Signal CLI 的 REST API 包装器 活跃,建立在https://github.com/AsamK/signal-cli之上
https://github.com/aaronetz/signal-bot 机器人框架 爪哇 最后更改 2021 年 2 月 18 日
https://github.com/signal-bot/signal-bot 机器人框架 Python 最后更改 2018 年 7 月 6 日

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

signalbot-0.6.0.tar.gz (11.6 kB 查看哈希

已上传 source

内置分布

signalbot-0.6.0-py3-none-any.whl (12.0 kB 查看哈希

已上传 py3