如何实现Discord机器人添加用户为好友并接受好友请求?
Discord机器人添加好友与接受好友请求指南
嘿,我来帮你搞定这两个Discord机器人开发的问题!先给你理清楚核心限制和解决办法:
一、机器人主动加好友的限制
首先得明确:Discord官方API不允许机器人主动发起好友请求——这是平台为了防止垃圾机器人滥用设置的规则。所以机器人没法主动去加用户为好友,只能等用户先给机器人发好友请求,再由机器人接受。
二、让机器人自动接受好友请求的实现
下面用主流的discord.py库(v2.x版本)举个例子,实现监听并自动接受好友请求:
代码示例
import discord from discord.ext import commands # 必须开启对应的intents才能监听好友请求事件 intents = discord.Intents.default() intents.members = True # 关键:开启成员意图 intents.presences = True bot = commands.Bot(command_prefix="!", intents=intents) @bot.event async def on_raw_friend_request(payload): try: # 获取请求对象并接受 friend_request = await bot.fetch_friend_request(payload.request_id) await friend_request.accept() # 获取请求用户信息并打印日志 requester = await bot.fetch_user(payload.user_id) print(f"已接受 {requester.name}#{requester.discriminator} 的好友请求") except discord.Forbidden: print("权限不足,无法接受好友请求") except Exception as e: print(f"处理好友请求时出错:{str(e)}") # 启动机器人 bot.run("你的机器人TOKEN")
关键注意点
- 去Discord开发者门户的机器人设置里,开启Server Members Intent和Presence Intent,不然机器人监听不到好友请求事件。
- 如果你的机器人还没经过验证,只要规模不大(服务器数<100),开启这些intents是没问题的。
三、好友通过后添加到群聊DM
当机器人和用户成为好友后,就可以创建群聊DM或者把用户加入已有的群DM了,代码示例如下:
# 示例1:创建新的群聊DM并添加用户 async def create_group_dm_with_user(user): group_dm = await bot.create_group_dm([user]) await group_dm.send("欢迎加入群聊DM!") # 示例2:将用户加入已有的群聊DM(假设你已经有dm_channel对象) async def add_user_to_group_dm(dm_channel, user): try: await dm_channel.add_recipient(user) print(f"已将 {user.name} 添加到群聊DM") except discord.Forbidden: print("无法添加用户,可能不是好友或者权限不足")
这样就能解决你说的“无法添加非好友到群聊DM”的问题啦!
内容的提问来源于stack exchange,提问作者tristan360




