Skip to content

Autuamn/nonebot-plugin-dcqq-relay

Repository files navigation

QQ群-Discord 互通

python

前言

OneBot 实现众多,表现各有不同,我的测试环境为 Lagrange.Onebot,遇到 bug 请提 issues,务必附上日志

本人 python 水平有限,遇到你认为可以改进的方法和函数,或有任何不妥之处,或需要注释支持,也请提出

功能

可以在指定的QQ群和 Discord 频道之间同步消息,只支持普通的文字频道,不支持帖子频道

消息支持情况

类型 QQ to Discord Discord to QQ 备注
文字 🟢 🟢 🟢支持
图片 🟢 🟢 🟡压缩为文字
At 🟡 🟡 ⚠️不良好
回复 🟢 🟢
撤回 🟢 ⚠️
表情 🟡 🟡
贴纸 🟡
文件 🟢 🟢
视频 🟢 🟢
语音 🟢 🟢
Embed 🟢
xml ⚠️
json ⚠️

安装

使用 nb-cli 安装

在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装

nb plugin install nonebot-plugin-dcqq-relay

使用包管理器安装

建议使用 poetry

  • 通过 poetry 添加到 NoneBot2 项目的 pyproject.toml
poetry add nonebot-plugin-dcqq-relay
  • 也可以通过 pip 安装
pip install nonebot-plugin-dcqq-relay

安装开发中版本

pip install git+https://github.com/Autuamn/nonebot-plugin-dcqq-relay.git@main

配置

数据库

本插件使用 nonebot-plugin-orm 存储消息 ID

仅简单测试过 SQLite、MySQL、PostgreSQL

相关配置请看 NoneBot-最佳实践-数据库

机器人权限

Important

请在 Discord App 的 Bot 配置中打开 Message Content IntentPrivileged Gateway Intentsp 配置 并在 discord adapter 的 bot 配置中添加 intent "message_content": true

DISCORD_BOTS='[{"token": "xxx",
    "intent": {
      "guild_messages": true,
      "message_content": true   <<--- 像这样
    },"application_commands": {"*": ["*"]}}]'

推荐权限:管理员

最低权限:

  • QQ:
    • 管理员(不给撤回功能将不正常)
  • Discord:
    • Manage Messages(不给无法撤回)
    • Mention Everyone(不给无法转发@全体成员)
    • Manage Webhooks(不给要提供 Webhook)

dcqq_relay_channel_links

  • 类型:json
  • 默认值:[]
  • 说明:链接对应的QQ群与 Discord 频道,目前只支持一对一链接

配置文件示例

dcqq_relay_channel_links='[
    {
        "qq_group_id": 123132,
        "dc_guild_id": 456456,
        "dc_channel_id": 789789,
        "webhook_id": 4444444,
        "webhook_token": "asdxxx"
    },
    {
        "qq_group_id": int                # QQ群号
        "dc_guild_id": int                # Discord 服务器 id
        "dc_channel_id": int              # Discord 频道 id
        "webhook_id": Optional[int]       # (可选的)Discord 对应频道的 Webhook ID
        "webhook_token": Optional[str]    # (可选的)Discord 对应频道的 Webhook Token
                                        # 不要把注释放在此处!!
    }
]'

Important

Webhook 的相关配置是可选的,不填插件会自动获取,但是要给机器人 Manage Webhooks 权限

关于 Webhook 是什么请看:使用網絡鉤手(Webhooks)

得到 Webhook URL 后,可从 URL 中获取 webhook_idwebhook_token

Webhook URL 形如: https://discord.com/api/webhooks/{webhook_id}/{webhook_token}

例如:


                                |     webhook_id    |                               webhook_token                        |
https://discord.com/api/webhooks/1243529342621978694/kq1Vc3NsN4d3SB0MAusB-xbY_e8xMChQmxypIFna0c1lwQS-uL85fqupK2jFfkYtUR1h
                                |-------------------|--------------------------------------------------------------------|

当 Webhook URL 为 https://discord.com/api/webhooks/1243529342621978694/kq1Vc3NsN4d3SB0MAusB-xbY_e8xMChQmxypIFna0c1lwQS-uL85fqupK2jFfkYtUR1h

1243529342621978694 就是 webhook_id

kq1Vc3NsN4d3SB0MAusB-xbY_e8xMChQmxypIFna0c1lwQS-uL85fqupK2jFfkYtUR1h 就是 webhook_token

dcqq_relay_unmatch_beginning

  • 类型:list[str]
  • 默认值:["/"]
  • 说明:指明不转发的消息开头

dcqq_relay_only_to_me

  • 类型:bool
  • 默认值:False
  • 说明:指明是否只转发 @机器人 的消息

特别感谢

About

在QQ群与 Discord 之间同步消息的 nonebot2 插件

Resources

License

Stars

Watchers

Forks

Contributors 6

Languages