我很困惑这个错误是如何发生的,它只发生在当我在我的机器人中使用踢/禁止命令而没有其他命令时,我看了on_message函数,它不会导致错误,当我发送任何其他消息时,除了从踢/禁止命令,我不知道为什么。我正确地通过公会,有一个id属性,因为代码还在工作,但它还是会出现这个。
以下是错误:
Ignoring exception in on_message
Traceback (most recent call last):
File ".local/lib/python3.7/site-packages/discord/client.py", line 333, in _run_event
await coro(*args, **kwargs)
File "file path", line 1937, in on_message
await open_automod(guild)
File "file path", line 1920, in open_automod
if str(guild.id) in data:
AttributeError: 'NoneType' object has no attribute 'id'
下面是导致此错误的bot命令示例:
@bot.command(name='testlog')
@commands.has_permissions(kick_members=True)
async def kick (ctx, member:discord.Member, *reason):
moderator = ctx.message.author.id
server = ctx.guild.id
if member == None or member == moderator:
await ctx.channel.send("You cannot kick yourself")
return
if reason == None:
reason = "no reason stated"
reason = " ".join(reason)
message = f"You have been banned from {ctx.guild.name}. Reason: {reason}"
await member.send(message)
await ctx.channel.send(f"{member} has been kicked. Reason: {reason}")
await send_log('test', moderator, member.id, reason, server)
下面是open_automod函数:
async def open_automod(guild):
data = await get_automod_data()
if str(guild.id) in data:
return False
else:
data[str(guild.id)] = {}
data[str(guild.id)]["automodenabled"] = f'off'
data[str(guild.id)]["automodlogging"] = f'false'
data[str(guild.id)]["automodchannel"] = 0
with open("automoderator.json","w") as f:
json.dump(data,f)
return True
下面是在“公会”中传递的代码部分:
@bot.event
async def on_message(message):
guild = message.guild
await open_automod(guild)
我不明白的是,为什么这个错误只出现在我使用kicks或bans的消息上,或者在上面的例子中是测试kick。谁能解释一下为什么我会出现这个错误,为什么它只发生在这条消息上?消息的一个示例是“h/testlog@user reason”
,而不是错误显示的kick
。从您的问题来看,您似乎期望运行kick
。这是因为在消息
上覆盖了。看到不和谐。为什么on_消息使我的命令停止工作的py文档:
覆盖\u消息上提供的默认值将禁止运行任何额外的命令。要解决此问题,请添加一个
bot。处理\u命令(消息)
消息末尾的行。或者,您可以[使用
@bot.listen('on_message')
]
@bot.event
async def on_message(message):
if (guild := message.guild):
await open_automod(guild)
如果仅在通道内调用,则应确保检查之前的ctx.guild
和ctx.channel
不是无
尝试使用它们,并回复如何正确使用机器人的说明。
- 如果命令是直接发送到bot,而不是在一个通道中,你应该想出另一种方法来获取
公会
和通道
(例如存储它,或作为命令的一部分传递)。
你好,我看到的日志信息只在某些类,不知道在哪里看。是我的原木模式搞错了还是?这是我的log4j配置,我将它与sfl4j一起使用: null 我创建的记录器是这样的,类字段: 和日志记录,如: 有什么想法吗? 更新 根据Petar Minchev的回答改为信息,但我仍然没有得到任何东西。 更新II 现在,在添加了一些依赖项之后,它可以在一些类上工作(仍然不能在其他一些类上工作)。有一些实现runna
我有一个目标。我想通过删除除某些特定属性之外的所有属性来修改对象(而不是克隆它)。例如,如果我从这个对象开始: 并且只需要属性p1、p2和p100,如何获得此对象: 我明白如何用蛮力做到这一点,但我想要一个更优雅的解决方案。
我的Android应用程序无法安装在一些“随机”、较旧的API设备上(任何低于API级别25的设备),错误如下: 所以,基本上看起来… API 我见过类似的问题,答案与小写的包名有关。我已经有了。 有人有什么想法吗? 舱单: BTW我用的是Visual Studio 2019和一夫一妻制3.7
这条信息是什么意思?我搜索了一下,但什么也没找到。什么可能导致这一切?
我正在Apache7.xx应用程序上开发Spring MVC,并且没有任何错误地设置了所有内容。 我有一个应用程序将我的dispatcher servlet映射到HomeController,HomeController为视图“home/view”提供服务,该视图也在工作。 spring-servlet相关片段(在我的例子中是cmgr-servlet) applicationcontext.xml
问题内容: 我正在使用Android Custom Launcher。该应用程序可以在某些手机上完美运行,但不能在其他手机上启动。启动应用程序时,会发生以下错误。 问题答案: 因此,经过大量搜索之后,我才知道这个问题是由于多重处理造成的。在某些手机上,多点排序不起作用。可能是由于其Android版本。但是我通过引入应用程序类来解决此问题 在清单中,我在应用程序标签中输入了该名称,例如: