基于Python与Llama 3的Discord AI Selfbot部署与定制指南
1. 项目概述:打造一个“隐形”的AI聊天伙伴
如果你在Discord社区里混迹过,可能会觉得邀请一个官方机器人(Bot)到服务器里,再给它分配权限、设置前缀命令这一套流程有点繁琐,而且那个带着“机器人”标签的头像总让人觉得隔了一层。今天聊的这个项目,就提供了一种截然不同的思路: 让一个真实的Discord用户账号,背后运行一个AI大脑 。这就是所谓的“Selfbot”(自用机器人)。它不占用服务器机器人名额,不需要任何邀请或授权,在好友、群聊或服务器里,它看起来就是一个活生生的“人”,只有你知道它背后是代码在驱动。
这个名为“Discord AI Selfbot”的项目,核心是使用Python和 discord.py-self 库,将一个真实的Discord账号转化为一个智能聊天体。它的最大亮点是 完全免费地接入了顶级的开源大模型 。通过集成Groq云服务提供的Llama 3模型,你无需为OpenAI的API付费,就能获得媲美ChatGPT的对话体验。当然,它也预留了接口,如果你有自己的OpenAI API密钥,也可以无缝切换。想象一下,在你的私人聊天或小圈子里,有一个永远在线、知识渊博、还能根据你设定的人格进行对话的“伙伴”,而这一切的成本几乎为零。
重要提示与风险认知 :首先必须明确,使用Selfbot违反了Discord的服务条款。Discord严格禁止任何自动化程序模拟用户行为。因此,这存在账号被封禁的风险,尽管在合理、低频使用下风险较低。 绝对不要在你的主账号、含有重要数据或社区的账号上使用 。请将其视为一个在可控环境下(如小范围私人服务器、与信任的好友测试)的技术实验项目,并使用一个你完全不在意丢失的“小号”。本人及项目作者均不对因使用此代码导致的任何账号问题负责。
2. 核心功能与设计思路拆解
2.1 为何选择Selfbot方案?
传统的Discord机器人运行在Discord的“机器人”体系下,有明确的权限边界和审核机制。而Selfbot方案则走了另一条路:它直接控制一个用户账号。这样做带来了几个独特优势:
- 零门槛接入 :无需将机器人邀请到服务器,也无需服务器管理员授予任何权限。只要这个账号在某个聊天环境里(私聊、群聊、服务器频道),它就能工作。这对于在那些你无法添加机器人的服务器里“悄无声息”地部署一个AI助手特别有用。
- 无痕融合 :它没有“机器人”标识,头像、昵称、状态都与普通用户无异。这带来了更强的沉浸感和趣味性,尤其适合角色扮演(RP)或营造一个“群里有个AI成员”的社区氛围。
- 直接利用用户权限 :作为“用户”,它天然拥有该账号在相应上下文中的所有权限。例如,它可以访问某些仅限会员的频道,或者发送一些需要特定身份组权限的消息。
当然,劣势也很明显,就是前面提到的 违反ToS的风险 。因此,项目的设计中也包含了一些降低风险的措施,例如防滥用机制和可调节的响应频率。
2.2 核心功能模块解析
这个Selfbot并非一个简单的“问答机”,它集成了多个提升体验和实用性的模块:
- 智能对话核心 :基于Groq的Llama 3模型。选择Llama 3是因为它在开源模型中性能第一梯队,且通过Groq的API调用,凭借其特制的LPU推理引擎,速度极快,响应延迟感很低。这保证了对话的流畅性。
- 上下文与记忆管理 :机器人能识别对话线程。如果你回复(Reply)它的上一条消息,它能理解这是对话的延续,从而保持上下文连贯。同时,它也内置了历史记录管理功能(通过
~wipe命令可清空),防止上下文过长导致API调用失败或成本增加。 - 多模态输入 :除了文字,它还能识别消息中的图片附件。虽然项目描述中未详细说明其具体能力(是识别图片内容描述,还是进行更深度的视觉问答),但这一功能为互动打开了更多可能性,比如你可以发一张图问它“这张图里有什么好笑的地方?”。
- 精细化控制 :
- 频道开关 :使用
~toggleactive命令可以精确控制机器人在哪些频道响应,避免在公共频道刷屏。 - 会话类型控制 :通过
~toggledm和~togglegc独立控制是否在私聊和群聊中响应。 - 用户屏蔽 :
~ignore命令可以将特定用户加入黑名单,防止被骚扰或滥用。 - 人格设定 :通过修改
instructions.txt文件,你可以为AI设定系统指令,定义它的角色、说话风格、知识边界等。这是打造专属AI角色的关键。
- 频道开关 :使用
- 拟人化交互 :
- 触发词机制 :不像传统机器人用前缀(如
!),它通过config.yaml中设定的“触发词”来激活。例如触发词设为“小智”,那么别人需要说“小智,今天天气如何?”它才会回应。这更接近@某人的自然交互。 - 模拟打字 :消息发出前,会显示“对方正在输入…”的提示,并且有随机的延迟,模仿真人打字速度,大大增强了真实感。
- 防滥用(Anti-spam) :内置机制防止用户短时间内频繁触发机器人,既保护API不被滥用,也降低因异常行为被Discord风控检测的风险。
- 触发词机制 :不像传统机器人用前缀(如
- 娱乐与分析功能 :
~analyse命令是一个趣味功能。它可以分析指定用户近期的消息历史,并让AI生成一份带有娱乐性质的“心理分析报告”。 切记,这纯粹是为了好玩,没有任何科学依据,切勿当真。
这样的功能组合,使得这个项目从一个简单的API调用示例,变成了一个功能相对完备、可定制性高、用户体验考究的“虚拟用户”系统。
3. 从零开始的详细部署指南
这里我们选择 手动部署 的方式。使用预编译的exe文件虽然简单,但无法了解内部机制,也不利于后续自定义修改。手动部署能让你完全掌控这个项目。
3.1 前期环境准备
你的电脑需要先准备好以下基础环境:
- Python 3.8+ :这是项目运行的基础。去Python官网下载并安装最新稳定版,安装时务必勾选“Add Python to PATH”。
- Git :用于克隆代码仓库。同样从官网下载安装。
- 代码编辑器 :推荐VS Code或PyCharm,方便查看和修改代码。
打开终端(Windows用CMD或PowerShell,macOS/Linux用Terminal),通过 python --version 或 python3 --version 检查Python是否安装成功。
3.2 获取项目源码与创建虚拟环境
我们不直接修改系统Python环境,而是为这个项目创建一个独立的“虚拟环境”,避免包版本冲突。
# 1. 克隆项目代码到本地
git clone https://github.com/Najmul190/Discord-AI-Selfbot.git
# 进入项目文件夹
cd Discord-AI-Selfbot
# 2. 创建虚拟环境(环境名可自定义,这里用 venv)
# Windows:
python -m venv venv
# macOS/Linux:
python3 -m venv venv
# 3. 激活虚拟环境
# Windows (CMD/PowerShell):
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
激活后,你的命令行提示符前通常会显示 (venv) ,表示已进入该虚拟环境。
3.3 安装项目依赖
项目根目录下有一个 requirements.txt 文件,列出了所有必需的Python库。
# 确保在虚拟环境激活状态下执行
pip install -r requirements.txt
关键依赖包括:
discord.py-self: 这是discord.py的一个分支,修改了内部认证机制以支持用户账号登录,是Selfbot的核心。groq: 官方Groq API客户端库,用于调用Llama 3模型。pyyaml: 用于读取YAML格式的配置文件。python-dotenv: 用于从.env文件安全加载环境变量(如Token)。
3.4 获取并配置关键凭证
这是最关键也最需要小心的一步,涉及你的Discord账号安全和API访问权限。
3.4.1 获取Discord用户Token(高风险操作)
Discord用户Token相当于你账号的“密码令牌”,一旦泄露,他人可直接控制你的账号。因此, 务必使用一个无关紧要的“小号” 。
- 在浏览器(推荐Chrome或Edge)中登录你的Discord小号。
- 打开任意频道或私聊,按
F12或Ctrl+Shift+I打开开发者工具。 - 切换到 “网络”(Network) 标签页。
- 在Discord界面内进行一次能触发网络请求的操作,例如: 发送一条消息 ,或者 切换一下服务器 。
- 在开发者工具的“网络”记录列表中,寻找一个名为
messages?limit=50或science或preview的请求,点击它。 - 在右侧打开的详情面板中,找到 “请求头”(Request Headers) 部分。
- 在其中找到
authorization这一项,其后面的一长串字符(通常以字母开头)就是你的用户Token。 立即复制它,并像保管密码一样保管它,切勿分享或上传到任何公开地方。
3.4.2 获取Groq API Key(免费)
- 访问 Groq控制台 。
- 使用你的Google或GitHub账号注册并登录。
- 登录后,在页面中找到 “API Keys” 或类似选项。
- 点击 “Create API Key” ,为其起个名字(如
MyDiscordBot)。 - 创建成功后,你会看到一串以
gsk_开头的密钥。 立即复制保存 。Groq目前提供免费的API调用额度,对于个人聊天场景通常足够。
3.5 配置文件详解与填写
项目根目录下有两个关键的配置文件模板: example.env 和 config.yaml 。
第一步:配置环境变量 (.env) 将 example.env 文件复制一份,并重命名为 .env (注意开头有个点)。然后用文本编辑器打开 .env 文件。
# .env 文件内容
DISCORD_TOKEN=你的Discord用户Token
GROQ_API_KEY=你的Groq API Key
# OPENAI_API_KEY=你的OpenAI API Key (可选,如果要用ChatGPT)
- 将
你的Discord用户Token替换为上一节获取的那串字符。 - 将
你的Groq API Key替换为从Groq控制台获取的密钥。 OPENAI_API_KEY这一行默认被注释(以#开头)。如果你有OpenAI的付费API密钥并想使用ChatGPT模型,可以取消注释并填写。 如果使用Groq,则此项留空或保持注释。
安全警告 :
.env文件包含了你的核心密钥。务必将其添加到.gitignore文件中,确保它不会被意外提交到公开的Git仓库。项目自带的.gitignore通常已包含此项。
第二步:配置行为参数 (config.yaml) 用文本编辑器打开 config.yaml 文件。这个文件控制机器人的行为。
# config.yaml 示例
settings:
trigger_word: "小智" # 触发机器人的关键词,别人需要提到这个词
typing_speed: 0.08 # 模拟打字的速度(秒/字符),值越小打得越快
typing_variance: 0.05 # 打字速度的随机变化范围,让速度更自然
max_response_length: 1500 # AI单次回复的最大长度(字符)
conversation_memory: 10 # 对话历史记录保留的轮数(一问一答为一轮)
groq:
model: "llama-3.1-70b-versatile" # 使用的Groq模型,可选其他如 llama-3.2-11b-vision-preview
temperature: 0.7 # 创造性/随机性 (0.0-1.0),值越高回答越多样
max_tokens: 1024 # 请求AI生成的最大token数
openai:
model: "gpt-4" # 如果使用OpenAI,选择的模型
temperature: 0.7
max_tokens: 1000
trigger_word: 这是最重要的设置之一。设定一个你喜欢的名字或代号,别人在消息中提及它时,机器人才会回应。typing_speed和typing_variance: 调整这两个值可以改变“正在输入”状态的持续时间,使其更符合真人习惯。conversation_memory: 控制AI能记住多少轮之前的对话。设置太大可能使上下文过长导致API调用失败或速度变慢,通常10-20轮是合理的。groq.model: Groq提供了多个Llama 3版本。llama-3.1-70b-versatile是性能最强的通用模型,llama-3.2-11b-vision-preview则更小更快且支持视觉。你可以根据需求在Groq控制台查看可用模型列表进行更换。
3.6 首次运行与测试
完成所有配置后,在终端(确保虚拟环境已激活)中运行:
python main.py
如果一切配置正确,你会看到终端输出登录成功的信息,并且你的Discord小号账号会显示在线。
测试步骤:
- 用你的 主账号 (或其他账号)向这个小号发送私信。
- 在消息中包含你设置的
trigger_word(例如“小智,你好吗?”)。 - 观察小号账号是否会显示“正在输入…”,并在稍后回复你。
- 尝试回复(Reply)它的一条消息,看它是否能理解上下文进行连续对话。
如果遇到错误,终端会打印详细的错误信息,这是排查问题的第一手资料。
4. 高级使用与个性化定制
4.1 深度定制AI人格
机器人的“性格”由 config/instructions.txt 文件决定。这个文件的内容会作为“系统提示词”(System Prompt)在每次对话开始时发送给AI模型,对其行为进行约束和塑造。
默认的指令可能比较通用。你可以将其修改为任何你想要的设定。例如,如果你想让它扮演一个傲娇的猫娘:
你是一个名为“小橘”的猫娘,性格傲娇,说话简短,经常在句尾加上“喵~”。你知识渊博但不喜欢直接承认,当被问及复杂问题时,会先抱怨一句“真拿你没办法喵”,然后再解答。你非常喜欢讨论鱼和毛线球。记住,你是一个虚拟角色,不要声称自己是AI或程序。
修改技巧 :
- 角色设定 :明确身份、姓名、性格。
- 说话风格 :规定口癖、语气、常用句式。
- 知识边界 :可以设定它“精通中世纪历史但对现代科技一窍不通”。
- 行为规则 :重要规则如“不要代称自己为AI”、“不要创造不实信息”等可以放在最后强调。
- 长度控制 :提示词不宜过长,通常200-500字为宜,确保核心指令能被模型有效接收。
修改后保存文件,在Discord中向机器人发送 ~reload 命令(或重启机器人),新的人格设定就会生效。
4.2 管理活跃范围与防滥用
合理使用控制命令是安全运行Selfbot的关键:
-
~toggleactive #频道名称:在某个服务器频道中使用此命令,可以将该频道加入或移出响应白名单。这是防止在公共频道刷屏的核心命令。建议先在小范围或私人频道激活。 -
~toggledm和~togglegc:这两个命令分别开关私聊和群聊的响应功能。如果你只想在服务器里使用,可以关闭私聊功能。 -
~ignore @用户名:如果有用户恶意频繁触发机器人,使用此命令可以屏蔽他。机器人将不再响应他的任何消息。 -
~pause:临时暂停机器人的所有AI响应功能,但命令依然可以接收。适合需要临时维护时使用。
4.3 模型参数调优
在 config.yaml 中, groq 或 openai 部分下的参数直接影响AI的回复质量:
-
temperature(温度) :取值范围0.0到2.0。这是最重要的创造性控制参数。0.0-0.3:回答非常确定、保守,重复问同一个问题会得到几乎相同的答案。适合事实性问答。0.7-0.9:常用的“创意”区间,回答多样有趣,适合聊天和角色扮演。>1.0:回答会变得非常随机、天马行空,甚至可能不连贯。
-
max_tokens(最大令牌数) :限制AI单次回复的长度。一个英文单词约等于1-2个token,中文字符约1-2个token。设置太小可能导致回答被截断,太大则可能消耗不必要的额度。聊天场景下,512-1024是个安全范围。 -
model(模型) :Groq会不定期更新可用模型。可以访问其文档,尝试切换不同的模型,例如从70B的大模型切换到11B的快速模型,在响应速度和回答质量之间取得平衡。
5. 常见问题排查与实战心得
在部署和使用过程中,你几乎一定会遇到一些问题。下面是我在多次部署中总结的常见坑点和解决方案。
5.1 启动与运行时报错
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
ModuleNotFoundError: No module named ‘discord’ |
依赖未安装或虚拟环境未激活。 | 1. 确认终端提示符前有 (venv) 。2. 重新运行 pip install -r requirements.txt 。 |
Login failure... 400: Bad Request 或 Improper token has been passed. |
Discord Token 无效或格式错误。 | 1. 绝对检查 Token是否复制完整,前后无空格。2. Token可能已失效(Discord会定期使Token失效,特别是从浏览器获取的)。重新按步骤获取一次。3. 确保使用的是 用户Token ,而不是机器人Token(以 Bot 开头)。 |
groq.BadRequestError: ... invalid api key |
Groq API Key 错误或未设置。 | 1. 检查 .env 文件中 GROQ_API_KEY= 后的密钥是否正确。2. 去Groq控制台确认密钥是否已成功创建且未删除。3. 确保 .env 文件已重命名正确(前面有点号),并与 main.py 在同一目录。 |
| 机器人登录成功但无响应 | 触发词未设置或不对;频道未激活。 | 1. 检查 config.yaml 中的 trigger_word 设置。2. 在目标频道使用 ~toggleactive 命令激活。3. 确保是 其他账号 发送包含触发词的消息。Selfbot不会响应自己账号发送的命令。 |
RuntimeError: Event loop is closed |
通常在Windows系统上,异步事件循环处理问题。 | 在 main.py 文件开头(import之后)添加以下代码: import asyncio import sys if sys.platform == "win32": asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) |
5.2 网络与API相关错误
-
Timeout或连接缓慢 :Groq的服务器可能在海外,国内直连可能不稳定。考虑使用网络优化工具来改善连接质量。这不是项目代码问题,而是网络环境问题。 -
Rate limit exceeded:API调用频率超限。Groq免费额度有每分钟、每天的请求次数限制。如果频繁触发,可以适当调高config.yaml中的typing_speed来降低响应频率,或者在代码中寻找添加延迟的地方。
5.3 行为异常与调试
- 机器人回复了错误的人/消息 :检查是否在群聊中,且触发词是否过于常见(如“AI”、“Bot”),导致被其他人的正常聊天触发。建议使用一个独特、不易撞车的触发词。
- 打字状态显示时间异常 :调整
config.yaml中的typing_speed(基础速度)和typing_variance(随机波动)。例如,typing_speed: 0.1表示每字符0.1秒,一条20字的回复就会显示“正在输入”约2秒。 -
~analyse命令返回空或错误 :该功能依赖于读取目标用户的公开消息历史。如果该用户在目标频道历史记录中消息很少,或者机器人没有读取消息历史的权限,则可能分析失败。这属于娱乐功能,不必深究。
5.4 安全与风控实战心得
这是运行Selfbot最需要关注的部分。以下经验能最大程度保护你的账号:
- 绝对使用小号 :这是铁律。不要在任何有价值的主号上尝试。
- 模拟真人行为 :
typing_speed不要设得太快(建议大于0.05秒/字符),避免秒回。可以加入随机延迟,让响应时间有变化。 - 控制活动范围 :尽量只在 私聊 、 好友小群 或 自己拥有完全控制权的私人服务器 中使用。绝对避免在大型公共服务器、官方服务器或你不熟悉的服务器中激活它。
- 低频使用 :不要让它7x24小时高密度聊天。模拟真人作息,偶尔下线。避免短时间内被大量用户@触发。
- 内容过滤 :项目代码本身没有内置内容过滤。如果AI被诱导说出违规言论,风险会剧增。考虑在代码中(处理AI回复后、发送前)添加一个简单的关键词过滤层,拦截明显违规内容。
- 定期更换Token :如果频繁使用,可以考虑每隔几周重新获取一次Token。旧的Token即使泄露也会失效。
手动部署这个Discord AI Selfbot的过程,更像是在组装一个有趣的数字生命体。从环境搭建、密钥配置,到人格塑造、行为调教,每一步都充满了动手的乐趣和微调的艺术。它本质上是一个在灰色地带游走的技术玩具,其价值不在于替代官方机器人,而在于提供了一个高度自由、深度定制、沉浸感强的AI交互实验平台。
更多推荐



所有评论(0)