2 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
您的on_member_join
方法是用一個(gè)discord.Member
名為 的對(duì)象調(diào)用的member
。
該member
對(duì)象有一個(gè)guild
屬性,請(qǐng)參閱https://discordpy.readthedocs.io/en/latest/api.html?highlight=member#discord.Member.guild
該guild
對(duì)象來自類discord.Guild
該對(duì)象有一個(gè)名為Integer 的guild
屬性,請(qǐng)參閱https://discordpy.readthedocs.io/en/latest/api.html?highlight=member#discord.Guild.idid
所以要回答這個(gè)問題:如何獲得你的公會(huì)ID
gid = member.guild.id
您獲取discord.Role
對(duì)象的邏輯是錯(cuò)誤的。此外,您不需要公會(huì) ID 即可獲得角色。你需要公會(huì)對(duì)象。
roles = member.guild.roles
https://discordpy.readthedocs.io/en/latest/api.html?highlight=member#discord.Guild.roles
這些都是公會(huì)的角色。
role = member.guild.get_role(123456)
https://discordpy.readthedocs.io/en/latest/api.html?highlight=member#discord.Guild.get_role
這會(huì)為您提供具有給定角色 ID 的角色。
嘗試閱讀并應(yīng)用文檔。盲目編程、遵循教程或查看其他人的工作不會(huì)讓你走得太遠(yuǎn)。很高興讓項(xiàng)目運(yùn)行,但最后文檔將包含您需要的所有知識(shí)。

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
#Auto role
@commands.Cog.listener()
async def on_member_join( self, member ):
emb = discord.Embed( title = '**Here is new member**', colour = discord.Color.green() )
with open('messagech.json', 'r') as f:
messagechs = json.load(f)
messagech = messagechs[str(member.guild.id)]
channel = self.bot.get_channel( int(messagech) )
with open('roles.json', 'r') as f:
roles = json.load(f)
role = roles[str(member.guild.id)]
role = int(role)
role = discord.utils.get(member.guild.roles, id = role )
await member.add_roles( role )
with open('roles.json', 'w') as f:
json.dump(roles, f, indent=4)
emb.set_author( name = self.bot.user )
emb.add_field( name = "**Say Hello to**", value = '**{}**'.format( member.mention ), inline=False )
emb.set_thumbnail( url = self.bot.user.avatar_url )
emb.add_field( name = "**Roles is**", value = '**{}**'.format( member.roles ).replace( '[' , '' ).replace( ']' , '' ).replace( '<' , '' ).replace( '>' , '' ).replace( "'" , '' ).replace( 'Role' , '' ).replace( 'id=' , '' ).replace( 'name=' , '' ).replace( '1' , '' ).replace( '2' , '' ).replace( '3' , '' ).replace( '4' , '' ).replace( '5' , '' ).replace( '6' , '' ).replace( '7' , '' ).replace( '8' , '' ).replace( '9' , '' ).replace( '0' , '' ).replace('"', '').replace("ud", ''), inline=False )
await channel.send( embed = emb)
添加回答
舉報(bào)