【发布时间】:2021-11-04 21:45:57
【问题描述】:
我正在尝试创建一个“!invite”命令来生成一个到服务器的邀请链接并将其发送给用户的 DM。 该命令有效,但我在控制台上收到以下错误:
Ignoring exception in on_message
Traceback (most recent call last):
File "C:\Users\001\Envs\Pix\lib\site-packages\discord\client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "C:\Users\001\PycharmProjects\Testing bot\cogs\invite.py", line 27, in on_message
if ctx.author.guild_permissions.administrator:
AttributeError: 'ClientUser' object has no attribute 'guild_permissions'
不过,我得到了链接:My DM screenshot.
我该如何解决这个错误?
代码:
from discord.ext import commands
from var.canais import inviteChannel
class Invite(commands.Cog):
def __init__(self, client):
self.client = client
@commands.command(
name='invite',
pass_context=True
)
async def invite(self, ctx):
invitelink = await ctx.channel.create_invite(
max_uses=1,
unique=True
)
if inviteChannel:
await ctx.message.delete()
await ctx.author.send(f'Invite link: {invitelink}')
@commands.Cog.listener()
async def on_message(self, ctx):
if inviteChannel:
if ctx.author.guild_permissions.administrator:
return
else:
if not ctx.content.startswith('!invite'):
await ctx.delete()
def setup(client):
client.add_cog(Invite(client))
【问题讨论】:
-
它实际上是真的,
ClientUser没有属性guild_permissions我不知道,但它应该是一个discord.Member类来获取guild_permissions属性。当您获得预期的输出时,您可以将代码放在try/except块中 -
请不要将
on_message事件用于命令。您已经有一个名为invite的命令 -
这里的
inviteChannel是什么? -
我正在使用
on_message,以便在适当的文本频道中,只有管理员可以发送“!邀请”以外的内容。InviteChannel是我要在其上运行“!invite”命令的频道 ID 的变量。
标签: python discord discord.py attributeerror