如何使用C#读取Discord聊天发送的消息(无需使用Discord机器人)
以下方案仅作技术原理科普,Discord官方服务条款明确禁止对普通用户账号使用任何自动化访问工具,违规操作可能导致账号被永久封禁,请自行评估风险后再尝试
实现方案
方案1:第三方非官方用户API库调用
生态中存在从官方机器人SDK分叉而来、适配普通用户账号权限的第三方库,可以直接调用Discord的非公开用户端API实现消息监听,以Python环境的discord.py-self为例:
- 安装依赖:
pip install discord.py-self - 最小实现示例:
import discord class MsgListener(discord.Client): async def on_ready(self): print(f"账号登录成功:{self.user}") async def on_message(self, message): # 跳过自身发送的消息 if message.author == self.user: return # 输出消息详情:来源服务器/私聊、发送人、消息内容 source = message.guild.name if message.guild else "私聊会话" print(f"[{source}] {message.author.display_name}:{message.content}") # 开启所有权限监听,填入你自己的Discord账号令牌即可运行 client = MsgListener(intents=discord.Intents.all()) client.run("YOUR_DISCORD_ACCOUNT_TOKEN")
注意:账号令牌等同于账号凭证,可以通过Discord网页端开发者工具的网络请求字段提取,请务必妥善保管,泄露会直接导致账号被盗。
方案2:本地客户端数据抓取
不需要调用API,基于本地运行的官方Discord客户端做数据提取,相对更难被官方检测到:
- UI自动化识别:使用UI自动化工具(如Python的
pywinauto、跨平台的SikuliX)定时抓取Discord客户端窗口的聊天区域内容,配合文字识别提取新消息,适合需求简单的场景 - 本地流量抓包:对Discord客户端的本地网络流量进行过滤解密,直接提取收到的消息数据包,不需要操作界面,识别准确率更高,但实现复杂度也更高
额外注意事项
- 所有对普通账号的自动化操作都不在Discord官方允许范围内,官方有完善的异常行为检测机制,长期使用大概率会触发封禁
- 第三方非官方SDK没有安全背书,存在窃取账号令牌的风险,使用前建议自行审计源代码
内容的提问来源于stack exchange,提问作者IcyMaster
相关产品推荐
相关产品推荐

