Browse Source

[commands] fix bot_has_role and is_nsfw for threads

pull/7313/head
z03h 4 years ago
committed by GitHub
parent
commit
8851e03a6d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 12
      discord/ext/commands/core.py

12
discord/ext/commands/core.py

@ -1673,11 +1673,10 @@ def bot_has_role(item):
"""
def predicate(ctx):
ch = ctx.channel
if not isinstance(ch, discord.abc.GuildChannel):
if ctx.guild is None:
raise NoPrivateMessage()
me = ch.guild.me
me = ctx.me
if isinstance(item, int):
role = discord.utils.get(me.roles, id=item)
else:
@ -1701,11 +1700,10 @@ def bot_has_any_role(*items):
instead of generic checkfailure
"""
def predicate(ctx):
ch = ctx.channel
if not isinstance(ch, discord.abc.GuildChannel):
if ctx.guild is None:
raise NoPrivateMessage()
me = ch.guild.me
me = ctx.me
getter = functools.partial(discord.utils.get, me.roles)
if any(getter(id=item) is not None if isinstance(item, int) else getter(name=item) is not None for item in items):
return True
@ -1902,7 +1900,7 @@ def is_nsfw():
"""
def pred(ctx):
ch = ctx.channel
if ctx.guild is None or (isinstance(ch, discord.TextChannel) and ch.is_nsfw()):
if ctx.guild is None or (isinstance(ch, (discord.TextChannel, discord.Thread)) and ch.is_nsfw()):
return True
raise NSFWChannelRequired(ch)
return check(pred)

Loading…
Cancel
Save