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方案则走了另一条路:它直接控制一个用户账号。这样做带来了几个独特优势:

  1. 零门槛接入 :无需将机器人邀请到服务器,也无需服务器管理员授予任何权限。只要这个账号在某个聊天环境里(私聊、群聊、服务器频道),它就能工作。这对于在那些你无法添加机器人的服务器里“悄无声息”地部署一个AI助手特别有用。
  2. 无痕融合 :它没有“机器人”标识,头像、昵称、状态都与普通用户无异。这带来了更强的沉浸感和趣味性,尤其适合角色扮演(RP)或营造一个“群里有个AI成员”的社区氛围。
  3. 直接利用用户权限 :作为“用户”,它天然拥有该账号在相应上下文中的所有权限。例如,它可以访问某些仅限会员的频道,或者发送一些需要特定身份组权限的消息。

当然,劣势也很明显,就是前面提到的 违反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 前期环境准备

你的电脑需要先准备好以下基础环境:

  1. Python 3.8+ :这是项目运行的基础。去Python官网下载并安装最新稳定版,安装时务必勾选“Add Python to PATH”。
  2. Git :用于克隆代码仓库。同样从官网下载安装。
  3. 代码编辑器 :推荐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相当于你账号的“密码令牌”,一旦泄露,他人可直接控制你的账号。因此, 务必使用一个无关紧要的“小号”

  1. 在浏览器(推荐Chrome或Edge)中登录你的Discord小号。
  2. 打开任意频道或私聊,按 F12 Ctrl+Shift+I 打开开发者工具。
  3. 切换到 “网络”(Network) 标签页。
  4. 在Discord界面内进行一次能触发网络请求的操作,例如: 发送一条消息 ,或者 切换一下服务器
  5. 在开发者工具的“网络”记录列表中,寻找一个名为 messages?limit=50 science preview 的请求,点击它。
  6. 在右侧打开的详情面板中,找到 “请求头”(Request Headers) 部分。
  7. 在其中找到 authorization 这一项,其后面的一长串字符(通常以字母开头)就是你的用户Token。 立即复制它,并像保管密码一样保管它,切勿分享或上传到任何公开地方。

3.4.2 获取Groq API Key(免费)

  1. 访问 Groq控制台
  2. 使用你的Google或GitHub账号注册并登录。
  3. 登录后,在页面中找到 “API Keys” 或类似选项。
  4. 点击 “Create API Key” ,为其起个名字(如 MyDiscordBot )。
  5. 创建成功后,你会看到一串以 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小号账号会显示在线。

测试步骤:

  1. 用你的 主账号 (或其他账号)向这个小号发送私信。
  2. 在消息中包含你设置的 trigger_word (例如“小智,你好吗?”)。
  3. 观察小号账号是否会显示“正在输入…”,并在稍后回复你。
  4. 尝试回复(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最需要关注的部分。以下经验能最大程度保护你的账号:

  1. 绝对使用小号 :这是铁律。不要在任何有价值的主号上尝试。
  2. 模拟真人行为 typing_speed 不要设得太快(建议大于0.05秒/字符),避免秒回。可以加入随机延迟,让响应时间有变化。
  3. 控制活动范围 :尽量只在 私聊 好友小群 自己拥有完全控制权的私人服务器 中使用。绝对避免在大型公共服务器、官方服务器或你不熟悉的服务器中激活它。
  4. 低频使用 :不要让它7x24小时高密度聊天。模拟真人作息,偶尔下线。避免短时间内被大量用户@触发。
  5. 内容过滤 :项目代码本身没有内置内容过滤。如果AI被诱导说出违规言论,风险会剧增。考虑在代码中(处理AI回复后、发送前)添加一个简单的关键词过滤层,拦截明显违规内容。
  6. 定期更换Token :如果频繁使用,可以考虑每隔几周重新获取一次Token。旧的Token即使泄露也会失效。

手动部署这个Discord AI Selfbot的过程,更像是在组装一个有趣的数字生命体。从环境搭建、密钥配置,到人格塑造、行为调教,每一步都充满了动手的乐趣和微调的艺术。它本质上是一个在灰色地带游走的技术玩具,其价值不在于替代官方机器人,而在于提供了一个高度自由、深度定制、沉浸感强的AI交互实验平台。

更多推荐