1 个不稳定版本
0.1.0 | 2023年3月12日 |
---|
#823 in 身份验证
330KB
1K SLoC
一次性使用的矩阵机器人
面向一次使用从命令行调用的矩阵机器人。
功能/使用方法
命令本身非常有用
Usage: fafbot [OPTIONS] <COMMAND>
Commands:
login Login to server with user and password
login-sso Login to server through SSO
login-restore-session Login to server by reusing an existing token
join Join room
leave Leave room
list-joined List joined rooms
list-invited List rooms invited to
send Send message
help Print this message or the help of the given subcommand(s)
Options:
--debug Enable debug logging
--dry-run Do everything but send the message and join/leave channels (still log in, etc)
-d, --db-dir <db-dir> Directory where the bot state is stored [env: FAFBOT_DB_DIR] [default: /home/user/.local/state/fafbot]
-h, --help Print help
本质上
- 您需要通过运行前三个子命令之一来登录服务器。
- 对于下一次调用,您应该使用
join
子命令加入一个房间。如果您想加入一个私人房间,请确保首先被邀请。方便起见,有一个list-invited
子命令。 - 做任何事;加入/离开房间,发送消息。我不是你的妈妈。
如果你不熟悉矩阵,请注意,用户可能有多个设备。矩阵的端到端加密是通过向每个用户的设备发送加密密钥来工作的,这意味着通常用户会尽量减少设备的数量。这就是为什么登录与加入/离开/发送分开,以及为什么有一个状态目录:每次登录都会创建一个会话,即一个设备。
已知问题 1
有时在运行时,fafbot可能会遇到解密问题。这看起来是矩阵SDK的问题,但看起来是无害的
Failed to decrypt a non-pre-key message with all available sessions sender=@user:example.org sender_key=f0O69NqwrEVNjdnqlwhQPdn4xVqF05YGr8wR1Jhi+mTNr0UFAaOiQtu1Q
An Olm message got replayed, decryption failed sender="@user:example.org" sender_key=vf0O69NqwrEVNjdnqlwhQPdn4xVqF05YGr8wR1Jhi+mTNr0UFAaOiQtu1Q
还有
Failed to deserialize a global account data event error=Error("unknown variant `org.matrix.msc3931.room_version_supports`, expected one of `event_match`, `contains_display_name`, `room_member_count`, `sender_notification_permission`", line: 1, column: 1018)
Failed to deserialize a global account data event error=Error("unknown variant `org.matrix.msc3931.room_version_supports`, expected one of `event_match`, `contains_display_name`, `room_member_count`, `sender_notification_permission`", line: 1, column: 1018)
已知问题 2
如果在使用 login-restore-session
子命令时,设备上没有注册任何密钥。如果有,您将看到这样的错误,并需要设置一个新会话
Error when sending out an outgoing E2EE request error=Http(Api(Server(Known(ClientApi(Error { kind: Unknown, message: "One time key signed_curve25519:AAAAAAAAAA0 already exists. Old key: {\"key\":\"mme2Wf6Bj4wfx50ZHIr6LbR7eVGByKQFwHtmgOYjpoOqAQa1gM1SLKD2hg\",\"signatures\":{\"@user:example.org\":{\"ed25519:\":\"a072/U1At3i1JXi7XzOaCsRTR8hhjcgLwMS4Q5pOFCkRBA9KX2J8RWcX+/m5adqcybUzHrgtQ3TCaz9N1rmAEP2eNfsVA1Ug/IcImub7MT1xQ4kzr2Y\"}}}; new key: {'key': 'd44FTHHoKWazpSZhHKUpPFoakL0p3RhUrxoyFmEphmoBxfO+cA2KOkh4AQ', 'signatures': {'@user:example.org': {'ed25519:BIEPEEXIEN': '9cynKfWRywWX3y1+dp3XzrS7HMa2v9DKButSZYv/F4gLCI3pnSLH+NRuMpEMiIsMcrW6xsg6cImK9nbZ/f/lYlbWfTUUIMRsx5inyTWl9qvnpepegNM'}}}", status_code: 400 })))))
依赖项
~26–45MB
~731K SLoC