2 回答
TA贡献1806条经验 获得超5个赞
您的on_member_join
方法是用一个discord.Member
名为 的对象调用的member
。
该member
对象有一个guild
属性,请参阅https://discordpy.readthedocs.io/en/latest/api.html?highlight=member#discord.Member.guild
该guild
对象来自类discord.Guild
该对象有一个名为Integer 的guild
属性,请参阅https://discordpy.readthedocs.io/en/latest/api.html?highlight=member#discord.Guild.idid
所以要回答这个问题:如何获得你的公会ID
gid = member.guild.id
您获取discord.Role
对象的逻辑是错误的。此外,您不需要公会 ID 即可获得角色。你需要公会对象。
roles = member.guild.roles
https://discordpy.readthedocs.io/en/latest/api.html?highlight=member#discord.Guild.roles
这些都是公会的角色。
role = member.guild.get_role(123456)
https://discordpy.readthedocs.io/en/latest/api.html?highlight=member#discord.Guild.get_role
这会为您提供具有给定角色 ID 的角色。
尝试阅读并应用文档。盲目编程、遵循教程或查看其他人的工作不会让你走得太远。很高兴让项目运行,但最后文档将包含您需要的所有知识。
TA贡献1860条经验 获得超8个赞
#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)
添加回答
举报