You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord Bot如何向无共同服务器的指定用户ID列表发送私信?

Discord无共同服务器Bot发送私信实现说明

实现原理

你收到的这类私信是垃圾Bot利用Discord的私信规则实现的:

  • 只要Bot获取到目标用户的有效ID,且目标用户的Discord隐私设置没有开启「仅允许同服务器成员发送私信」,Bot不需要和用户处于共同服务器就能发起私信
  • 这类垃圾Bot通常是批量爬取公开频道、评论区露出的用户ID,定向批量发送邀请广告

你提到的原有代码只能给同服务器用户发私信,是因为代码中用的Greedy[User]参数解析逻辑,只能识别和Bot同服务器内的用户对象,无法解析不在同服务器的用户。

修改后的代码实现

你需要调整逻辑,直接通过用户ID拉取全局用户对象再发送私信,修改后代码如下:

from discord.ext.commands import Bot
from discord import Intents

# 初始化时开启必要的意图
intents = Intents.default()
intents.message_content = True

bot = Bot(command_prefix='!', intents=intents)

@bot.command()
async def pm(ctx, *, message):
    # 填入你要发送的目标用户ID列表,为整数格式
    target_user_ids = [123456789012345678, 987654321098765432]
    for user_id in target_user_ids:
        try:
            # 通过ID全局拉取用户对象,不需要同服务器
            user = await bot.fetch_user(user_id)
            await user.send(message)
            print(f"已向用户{user_id}发送私信")
        except Exception as e:
            print(f"向用户{user_id}发送失败:{e}")

bot.run("你的Bot TOKEN")

注意事项

  • Discord对Bot发送私信有严格的速率限制,短时间批量发送会直接触发风控,导致Bot账号被封禁
  • 如果目标用户开启了非共同服务器私信拦截,消息会发送失败
  • 批量发送广告邀请类内容违反Discord服务条款,一旦被举报,你的开发者账号、Bot都会被永久封禁

你提到的两条私信示例如下图:
Image 1
Image 2

内容的提问来源于stack exchange,提问作者help_me

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:24:07