8000 GitHub - Snapmali/discord-monitor at v0.7.2
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

监视Discord消息动态及用户状态变化,并将其推送至Win10通知、转发至QQ私聊或群聊中,可选择监听的Server、频道、用户

License

Notifications You must be signed in to change notification settings

Snapmali/discord-monitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

discord-monitor

GitHub release GitHub FOSSA Status

功能介绍

通过监听discord.py事件监测Discord中的消息及用户动态。

  • 消息动态:可监测消息发送、消息编辑、消息删除、频道内消息标注(pin),可监测频道中所有消息,亦可由频道名、频道ID、用户ID指定被监测的频道及用户
  • 用户动态:在指定被监测用户时,可通过Bot监视时可监测用户的用户名及标签更新、Server内昵称更新、在线状态更新、游戏动态更新;使用用户(非Bot)监视时仅可监测用户的用户名及标签更新、Server内昵称更新。
  • Windows 10系统下可将动态推送至通知中心
  • 可将监测到的动态由cqhttp-miraigo-cqhttp等兼容onebot接口标准的应用推送至QQ私聊及群聊,支持将本脚本与cqhttp应用异地部署。
  • 可在配置文件中设置各QQ用户或群聊是否接受消息动态及用户动态推送

脚本的实现基于discord.py库,QQ推送部分代码参考了lovezzzxxx大佬的livemonitor脚本,在此感谢。

食用方法

环境依赖

Release中发布了exe版本,配置过config.json后在Windows下可直接运行,仅需再下载go-cqhttp即可。

基于python3.7版本编写,python3.8版本可正常运行,其他版本未测试。3.4及以下版本应无法运行。同时在Ubuntu 16.04上可正常运行。

外部依赖库:requests, discord.py, plyer, pytz。可分别在命令行中执行pip install requests pip install discord.py pip install plyer pip install pytz进行安装。

QQ推送部分依赖cqhttp-miraigo-cqhttp等应用实现。其中go-cqhttp的部署较为简单,在其release中下载系统对应版本后运行即可,具体使用方法请参阅其文档。

脚本运行

DiscordMonitor.pyconfig.json放入同一文件夹下。运行前需要自定义config.json文件:

{
    //Discord用户或Bot的Token字段(你插的眼)
    "token": "User Token or Bot Token", 

    //上述Token是否属于Bot,是则为true,否则为false
    "is_bot": true, 

    //cqhttp应用的URL,若在本机部署则默认为"http://localhost:5700"
    "coolq_url": "http://localhost:5700", 

    //cqhttp应用的access token,若未设置access token请留空(即"coolq_token": "")
    "coolq_token": "Coolq-http-api access token, leave blank for no token",
    
    //网络代理的http地址,留空(即"proxy": "")表示不设置代理
    "proxy": "Proxy URL, leave blank for no proxy, e.g. http://localhost:1080", 

    //非Bot用户时的轮询间隔时间,单位为秒
    "interval": 60,

    //是否将动态推送至Windows 10系统通知中,非Windows 10系统下此选项失效
    "toast": true

    "monitor": {

        //监听的用户列表,其中key为用户ID,为字符串;value为在推送中显示的名称,为字符串。
        //特别的,列表为空时表示监听频道中所有消息且不监听用户动态
        "user_id": {"User ID": "Display name", "123456789": "John Smith"},
        //"user_id": {},
        
        //通过频道ID监听消息的频道列表,列表中值为频道ID,为整型数。特别的,列表为空时表示监听所有频道
        //仅作用于消息动态监听,填0时表示不通过频道ID监听消息动态
        "channel": [1234567890],
        //"channel": [],

        //通过频道名监听消息的频道列表,为嵌套列表。底层列表第一个值为Server名,其余值为频道名
        //仅作用于消息动态监听,留空时表示不通过频道名监听消息动态
        "channel_name": [["Server 1 name", "Channel 1 name", "Channel 2 name", "Channel 3 name"],
                            ["Server 2 name", "Channel 4 name"]],
        //"channel_name": []

        //监听的server列表,列表中值为服务器ID,为整型数。特别的,列表为空时表示监听所有Server
        //仅作用于用户动态监听,填0时表示不监听用户动态
        "server": [1234567890, 9876543210]
        //"server": []
    },
    "push": {
        //推送的QQ用户或群聊,为嵌套列表。底层列表第一个值为QQ号或群号;
        //第二个值为布尔型,表示是否推送消息动态;第三个值为布尔型,表示是否推送用户动态
        //列表可留空,表示不推送给私聊或群聊
        "QQ_group": [[1234567890, true, false], [9876543210, true, true]],
        "QQ_user": [[1234567890, true, false], [9876543210, true, true]]
        //"QQ_group": [],
        //"QQ_user": []
    }
}

其中监测的Discord用户及Server的ID可在Discord UI中右键点击用户或Server中得到。

用于监测的Bot(电子眼)的Token可在Discord Developer中查看,非Bot用户(肉眼)的Token需在浏览器的开发者工具中获得,具体方法可观看视频How to get your Discord Token(Youtube),不算复杂。

需要注意,通过用户Token使用本脚本可能违反Discord使用协议(请参阅Automated user accounts (self-bots)),并可能导致账号封停。有条件的话建议使用Bot,否则请谨慎使用或使用小号(义眼)。

同时,通过非Bot用户监视时,利用事件监测用户动态方法失效,仅可通过定时查询api方法监测用户用户名及标签更新、Server内昵称更新,此时动态将不会及时推送,同时无法监测在线状态更新及游戏动态更新。

另外对于bot用户,由于Discord会对bot请求用户动态以及server内用户列表进行限制,若需使用本脚本的用户动态监控,则需要在Discord Application的Bot设置页中启用"PRESENCE INTENT"及"SERVER MEMBERS INTENT"。若不启用则用户动态监视功能失效,无其他影响。

配置文件修改完毕后,在命令行中运行python DiscordMonitor.py即可。推送消息中默认时区为东八区。

已知问题

私聊推送失效

利用cqhttp应用向私聊中推送消息时,需要双方互为好友且对方已向己方发送过消息才可向对方发送消息。

编辑消息及删除消息监视失灵

目前仅可捕获脚本启动后发送的最新的1000条消息的编辑及删除事件,启动前以及在启动后最新的1000条以外的消息暂时不能获知其编辑或删除。

无征兆断连

若脚本出现断连且再未提示Logged in,但discord发送消息时脚本可正常反应,可能是由于未知原因脚本未捕 6492 connect事件,实际对脚本运行无影响。

↓此问题可能已修复

如果在中国大陆运行脚本并使用代理,出现无法登录,或多次断连后脚本再无动态,且discord发送消息脚本也无反应的问题,可能是由于依赖库discord.py使用的Websockets库不支持代理连接,导致脚本配置的代理无法被正确使用,可参阅#4204 Switching Websockets library to support proxy scenarios。实际上断连问题是否出现以及出现频率会受网络运营商、线路、地区等因素影响。暂无较完美的解决方案,可尝试在Windows端使用proxifier、或在Linux端使用netns,以避免在直接脚本中使用代理,从而绕开此问题,实际效果较为良好。

License

This software is under the GPL-3.0 license.

About

监视Discord消息动态及用户状态变化,并将其推送至Win10通知、转发至QQ私聊或群聊中,可选择监听的Server、频道、用户

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

0