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

Discord机器人被邀入服务器后自动发感谢消息的实现咨询

解决Discord机器人被邀请后自动发感谢消息的可行方案

哥们,我太懂你这种头疼了——旧版Discord库的方案全失效,想让机器人被拉进服务器后自动给主人发感谢消息却卡壳。我特意整理了几个适配新版库的可行办法,你照着来绝对能搞定:

一、用新版Discord.py的on_guild_join事件(最省心)

新版Discord.py把事件逻辑捋得很清楚了,直接监听机器人加入服务器的事件,然后找到服务器所有者发消息就行。注意一定要开对权限和意图!

import discord
from discord.ext import commands

# 配置必要的意图,没开的话根本监听不到事件
intents = discord.Intents.default()
intents.guilds = True  # 必须开启,才能收到服务器相关事件
intents.messages = True  # 确保机器人能发消息

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

@bot.event
async def on_guild_join(guild):
    # 拿到服务器所有者
    owner = guild.owner
    if owner:
        try:
            # 优先发私信,更礼貌
            await owner.send(f"感谢邀请我加入**{guild.name}**!有任何问题随时喊我,输入`!help`就能看我的功能哦~")
        except discord.Forbidden:
            # 怕用户关了陌生人私信,那就退而求其次找个能发消息的频道
            for channel in guild.text_channels:
                if channel.permissions_for(guild.me).send_messages:
                    await channel.send(f"@{owner.mention} 感谢邀请我加入**{guild.name}**!没法给你发私信,就在这儿跟你说啦😎")
                    break

bot.run('你的机器人令牌')

划重点:去Discord开发者门户的机器人设置里,一定要开启Server Members Intent,不然guild.owner可能拿不到,事件也监听不了!

二、精准追踪邀请人(进阶玩法)

如果你想给实际邀请机器人的人发消息,而不是只给服务器所有者,那就结合invite_create事件缓存邀请记录,再在加入服务器时匹配:

# 先整个缓存存邀请记录
invite_cache = {}

@bot.event
async def on_invite_create(invite):
    # 把服务器ID和邀请人ID绑定存起来
    invite_cache[invite.guild.id] = invite.inviter.id

@bot.event
async def on_guild_join(guild):
    inviter_id = invite_cache.get(guild.id)
    if inviter_id:
        inviter = guild.get_member(inviter_id)
        if inviter:
            try:
                await inviter.send(f"嘿,感谢你邀请我加入**{guild.name}**!以后有需求随时吩咐~")
            except discord.Forbidden:
                # 同样处理发不了私信的情况
                for channel in guild.text_channels:
                    if channel.permissions_for(guild.me).send_messages:
                        await channel.send(f"@{inviter.mention} 感谢邀请我!没法给你发私信,就在这儿道谢啦🥳")
                        break
        # 用完就删缓存,避免重复触发
        del invite_cache[guild.id]

注意:这个得开Invites Intent,而且只对新生成的邀请链接有效,旧链接可能追踪不到邀请人哦。

三、其他库的适配思路(比如Nextcord/Pycord)

如果你用的是Nextcord、Pycord这类Discord.py的衍生库,逻辑其实大同小异:

  • 先去开发者平台开好对应的意图
  • 监听on_guild_join事件
  • 找到目标用户(所有者/邀请人)发消息,记得处理发不了私信的异常

必看的关键细节

  • 权限给够:机器人得有发消息的权限,还有查看服务器成员的权限,不然要么拿不到用户,要么发不出消息
  • 意图别忘开:这是很多人踩坑的点!开发者平台里的Server Members Intent和Guilds Intent必须勾上
  • 异常要处理:很多用户会关闭陌生人私信,一定要加个 fallback 方案,不然机器人会报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 12:07:54