簡體   English   中英

Discord.py | 如何為成員添加角色?

[英]Discord.py | How can i add role to members?

在他對表情符號做出反應后,我想知道如何為成員設置角色。 我已經嘗試了幾種方法,但它還沒有奏效。

AttributeError: 'Guild' object has no attribute 'add_roles'我總是收到此錯誤,我嘗試將 Guild 替換為 User、Payload 或 Member,但無論如何都找不到

我的“ cogs ”文件夾中有兩個文件:

• roles.py - 處理帶有反應的消息(此文件完美運行)

• react.py - '聽' 對消息的反應

import discord
import asyncio
import emoji
from discord.ext import commands
from discord.utils import get

client = commands.Bot(command_prefix='/',preload=True)

class Reaction(commands.Cog):

    def __init__(self, client):
        self.client = client

    @commands.Cog.listener()
    async def on_raw_reaction_add(self, payload):
        guild_id = payload.guild_id
        guild = self.client.get_guild(guild_id)
        user_id = payload.user_id
        user = self.client.get_user(user_id)
        message_id = payload.message_id
        channel = self.client.get_channel(payload.channel_id)
        emoji = payload.emoji.name

        if message_id == 809523588721934336 and emoji == "🐍" and user_id != 799612948213399572:

            message = await channel.fetch_message(message_id)
            await message.remove_reaction("🐍", user)
            dev = get(guild.roles, id=799632281639321632)
            await guild.add_roles(dev)

def setup(client):
    client.add_cog(Reaction(client))

我認為有道理,你應該如何為公會添加角色? 您必須將其添加到discord.Member實例中,您可以使用payload.member獲取它

dev = get(guild.roles, id=799632281639321632)
member = payload.member
await member.add_roles(dev)

另請記住,您必須啟用intents.members

參考:

API 參考資料中,您可以看到 Guild 沒有方法add_roles 成員確實有這種方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM