- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我在尝试显示表示可以在 Discord 中提及的角色的符号时遇到问题。我目前正在使用discord.py,他们使用role.mentionable
,它是一个 bool 值https://discordpy.readthedocs.io/en/rewrite/api.html#discord.Role.mentionable
我想要完成但未能做到的事情是能够在可提及的角色前面设置 add :bell: 而对于不可提及的角色设置 :nobell: 。
我收到错误 AttributeError: 'str' 对象没有属性 'mentionable'
这是我正在使用的代码:
@commands.command(pass_context=True, no_pm=True, name='list', aliases=['roles', 'role'])
async def _list(self, ctx):
"""List of all available roles """
guild = ctx.message.guild
author = ctx.message.author
botroom = self.bot.get_channel(555844758778544160)
intros = self.bot.get_channel(485381365366390796)
#--- Role list Categories ---"
if ctx.message.channel == intros:
pass
else:
if ctx.message.channel == botroom:
title = '**Hey {}, here is a categorised list of roles you can add:**'.format(author.display_name)
embed = discord.Embed(title=title.format(), colour=0x0080c0)
embed.add_field(name="\n**__Notifications__**", value="roles with a :bell: at the beginning of them are @mentionable - when applied you may recieve notifications.\n\n", inline=False)
embed.set_footer(text="Tip: to add a role from the list type the command !add/remove followed by the role.")
#Lets start embed roles list below#
#Colours
Colours = ['Blue', 'Green', 'Orange', 'Yellow', 'Pink', 'Purple']
Colours.sort(key=str.lower)
embed.add_field(name='**__Colour Roles__**', value='\n'.join([":bell: {} **({})**" if role.mentionable in Colours else ":no_bell: {} **({})**".format(role, len([member for member in guild.members if ([r for r in member.roles if r.name == role])])) for role in Colours]))
await ctx.send(embed=embed)
else:
await ctx.send('You can only use this command in {}.'.format(botroom.mention))
更具体地说,错误位于代码中的这一行
embed.add_field(name='**__Colour Roles__**', value='\n'.join([":bell: {} **({})**" if role.mentionable in Colours else ":no_bell: {} **({})**".format(role, len([member for member in guild.members if ([r for r in member.roles if r.name == role])])) for role in Colours]))
我不知道从这里该做什么。非常感谢您的帮助。
编辑:回复@Kanasaki Torisowa
Colours = ['Blue', 'Green', 'Orange', 'Yellow', 'Pink', 'Purple']
Colours.sort(key=str.lower)
for role in guild.roles:
if role.mentionable in Colours == True:
embed.add_field(name='**__Colour Roles__**', value='\n'.join(["{} **({})**".format(role, len([member for member in guild.members if ([r for r in member.roles if r.name == role])])) for role in Colours]))
最佳答案
您可以通过在表情符号前面添加正斜杠来获取表情符号图标,如下所示 \:no_bell:
或 \:bell:
@command()
async def mentionable_roles(self, msg):
channel = self.bot.get_channel(555844758778544160)
if msg.channel == channel: # channel is equal to `555844758778544160`
emb = discord.Embed(title='Server Roles') # set the embed title
for i in msg.guild.roles: # loop through the roles
print(i.colour)
if i.mentionable == True: # role is mentionable
# add bell icon since role is mentionable
emb.add_field(name=i.name, value='🔔')
if i.mentionable == False: # role is not mentionable
# add no bell icon since role is not mentionable
emb.add_field(name=i.name, value='🔕')
emb.set_footer(
text="Tip: to add a role from the list type the command !add/remove followed by the role.")
await msg.send(embed=emb)
if msg.channel != channel:
await msg.send(f"You can only use this command at {channel.name}")
关于python - 试图展示值得提及的角色的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55329806/
我正在生成代码,其中我恰好将 n 个单词从一个内存位置复制到另一个非重叠内存位置。 n 是静态已知的。 目前,我发出大量加载指令,然后是大量存储指令,但我怀疑从 n 的某个值开始,调用 memcpy会
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
用例如下: 我有一张 map ,其中将插入一些键/值。 该程序将查询该 map ,但是在第一个查询之后,我可以保证该 map 将完全不会被修改。 因为查询的结果完全是输入的函数,所以在查询方法上放置属
Helo 伙计们,我尝试使用 Refs 并在他的内部提供 this.setState 但它给出: Maximum update depth exceeded. This can happen when
在检查事件时,使用带有 switch 或 if 的代码块是很常见的事情。如果变得简单,它可以是干净的代码,但似乎仍然有比需要更多的行,并且可以使用 lambda 进行简化。 用 if 阻止: if(a
Amazon 最近宣布在其 RDS 产品线中支持 Oracle: http://aws.amazon.com/rds/oracle/ 我想知道是否有人使用过它,或者是否有令人信服的理由将我的数据从 M
我是一名优秀的程序员,十分优秀!