【问题标题】:How to welcome new members in a specific "welcome" text channel discord.py?如何在特定的“欢迎”文本频道 discord.py 中欢迎新成员?
【发布时间】:2021-02-06 18:44:03
【问题描述】:

我想为我的机器人创建一个命令,我们可以在其中配置机器人可以发送的欢迎消息。所以,配置是这样工作的:nb welcome <#channel_where_welcome_msg_to_be_shown> <#channel_to_be_mentioned_in_the_welcome_msg>

预期的输出是写入位置的嵌入 Hello <member>! Pls go to <#channel_to_be_mentioned_in_the_welcome_msg> to choose your roles.

这是我的代码:

@client.command(aliases = ["welcome"])
async def _welcome(ctx, channel : discord.TextChannel, roles : discord.TextChannel = None):
    global channel_welcome
    global role_welcome
    channel_welcome = channel
    
    if roles != None:
        role_welcome = roles
        
    else:
        role_welcome = None
    
    await ctx.send("Ok, welcome message configured!")    

@client.event
async def on_member_join(member):
    global channel_welcome
    global role_welcome
    pfp = member.avatar_url
    
    if role_welcome == None:
        embedVar = discord.Embed(title="WELCOME!",description = "{}, you are welcome to this server!" . format(member.mention), color = 0xff9900)
        embedVar.set_thumbnail(url = pfp)
        await client.getchannel(channel_welcome).send(embed = embedVar)

    else:
        embedVar = discord.Embed(title="WELCOME!",description = "{}, you are welcome to this server! Go to {} to assign yourself some roles." . format(member.mention, role_welcome.mention), color = 0xff9900)
        embedVar.set_thumbnail(url = pfp)
        await client.getchannel(channel_welcome).send(embed = embedVar)

所以,welcome 命令是配置命令。如您所见,roles 参数是可选的,用户可以根据需要使用它。 每当我运行代码并且有人加入服务器时,它不会发送消息引发任何错误。

关于如何解决这个问题的任何建议?

【问题讨论】:

    标签: discord.py


    【解决方案1】:

    当用户加入时机器人没有反应的原因可能是因为你没有为机器人定义适当的意图。

    首先,您需要转到Discord Developer Portal 并启用Server Members Intent

    现在在代码中,您需要定义意图

    import discord
    from discord.ext import commands
    
    intents = discord.Intents().default()
    intents.members = True
    client = commands.Bot(prefix = "your_prefix", intents = intents)
    

    这将允许机器人监听on_member_join 事件。

    【讨论】:

    • 好的,但是你能解释一下意图是什么吗?顺便说一句,它成功了,谢谢!
    猜你喜欢
    • 2021-02-21
    • 2021-10-24
    • 2020-12-25
    • 2021-02-13
    • 2021-08-13
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多