当前位置: 首页 > 知识库问答 >
问题:

无法记录cog,gettin ExtensionNotFound

严斌
2023-03-14

我不确定我是否错过了这里的东西,但我有一个. py文件在我的齿轮文件夹,不会加载。不断给我错误”“上述异常是以下异常的直接原因:

discord.ext.commands.errors.扩展没有找到:扩展cogs.determine命中无法加载。

以下是我的文件位置的图片:https://imgur.com/a/gBbX4lM

我也会在这里复制代码供您查看,但会剪掉大部分代码,因为它相当长。如果你需要更多的信息,请告诉我。

import discord
import json
import random
import os
import time

from pathlib import Path
from threading import Timer
from discord.ext import commands
# from Roll_not_strike import *
# from Roll_true_strike import *
# from playerone_zero_current_hp import *
# from playertwo_zero_current_hp import *


def evasionTimer(self):
    pass

class Hit(commands.Cog):

    def __init__(self, client):
        self.client = client

    # Bulk of Code

def setup(client):
    client.add_cog(Hit(client))

机器人的主要脚本是:

import discord
import os
from discord.ext import commands

token = open("token.txt", "r").read()

client = commands.Bot(command_prefix = '!')

@client.command()
async def load(ctx, extension):
    client.load_extension("cogs." + extension)

@client.command()
async def unload(ctx, extension):
    client.unload_extension("cogs." + extension)

for filename in os.listdir("./cogs"):
    if filename.endswith('.py'):
        client.load_extension("cogs." + filename[:-3])

client.run(token)

cogs文件夹中的每一个cog都可以正常加载,我是否应该删除determineHit。py我不确定我在这里遗漏了什么。任何帮助都将不胜感激。

编辑:

在请求回溯之前,我开始思考发生了什么,并得出结论,文件确定it.py并没有真正使用任何不和谐的命令。发生的是用户在命令中输入不和谐!滚,机器人看到!roll命令指向确定it.py中的一个方法,在该方法中完成了所有的计算(该文件中的代码是纯python,没有调用不和谐命令),然后将该数据返回给机器人需要发送到聊天的数据存储在一个名为msg的二分音符中,该二分音符有一个for循环来打印所有必要的信息。

例如,在确定it.py中,您可能会发现:

msg = []
msg.append("Hi Peoples!")
msg.append("Wow! You hit someone!")
msg.append("Aww! You missed!")
msg.append("These are Examples!)
return msg

回到bot本身,它将解包msg,并使用for循环打印存储在其中的语句:

for msg_item in msg:
     await ctx.send(msg_item)

长话短说,我假设因为确定it.py没有使用不和谐库中的任何东西,所以它不需要是一个齿轮,它可以在同一个目录中的另一个文件夹中。

所以我这样做了:

https://imgur.com/a/qM7v8E4

希望这能解决我的问题。说明:其他文件下的it.py是相同的,他们只是包含计算等python文件,他们调用任何不和谐的库中没有方法。

显然,我错了。当我尝试使用determineHit import*中的运行bot时,我得到了启动这一切的扩展错误。如果不运行上述命令,bot就会启动,但显然无法运行该命令,因为它调用的方法不存在,因为它无法查看determineHit。py

对不起,可能比你需要的要多。但无论如何。。。

我还做了别人要求的追溯,得到了以下结果:

"C:\Users\arrae\PycharmProjects\Python Learning\venv\Scripts\python.exe" C:/Users/arrae/PycharmProjects/DiscordDiceGame/BotCommands.py
'Bot' object has no attribute 'load_extensions'
'Bot' object has no attribute 'load_extensions'
'Bot' object has no attribute 'load_extensions'
'Bot' object has no attribute 'load_extensions'
'Bot' object has no attribute 'load_extensions'
Bot is Online

请注意,这是在我移动确定它之后完成的。py从齿轮中取出,并将其放入“gamelogic”文件夹中。

然而,如果它确实有用,我将确定它。py返回cogs文件夹,并运行提供的相同回溯代码:

"C:\Users\arrae\PycharmProjects\Python Learning\venv\Scripts\python.exe" C:/Users/arrae/PycharmProjects/DiscordDiceGame/BotCommands.py
Traceback (most recent call last):
  File "C:\Users\arrae\PycharmProjects\Python Learning\venv\lib\site-packages\discord\ext\commands\bot.py", line 621, in load_extension
    lib = importlib.import_module(name)
  File "C:\Users\arrae\AppData\Local\Programs\Python\Python37\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\arrae\PycharmProjects\DiscordDiceGame\cogs\determineHit.py", line 10, in <module>
    from Roll_not_strike import *
ModuleNotFoundError: No module named 'Roll_not_strike'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:/Users/arrae/PycharmProjects/DiscordDiceGame/BotCommands.py", line 25, in <module>
    client.load_extension("cogs." + filename[:-3])
  File "C:\Users\arrae\PycharmProjects\Python Learning\venv\lib\site-packages\discord\ext\commands\bot.py", line 623, in load_extension
    raise errors.ExtensionNotFound(name, e) from e
discord.ext.commands.errors.ExtensionNotFound: Extension 'cogs.determineHit' could not be loaded.

如果我把事情弄得更复杂,我很抱歉。我以为我找到了自己的答案。


共有1个答案

朱鹏
2023-03-14

我想看到一个实际的回溯。

你可以创建一个字典,列出每个齿轮,看看它是否有用。

async def on_ready():
    print('Bot is ready')

initial_extensions = (
   'cogs.charCreation',
   'cogs.charFeats',
   'cogs.charSheet',
   'cogs.gameCombat',
   'cogs.determineHit'
)

for extension in initial_extensions:
    try:
       client.load_extensions(extension)
    except Exception as e:
       print(e)    

资料来源:https://github.com/Rapptz/RoboDanny/blob/rewrite/bot.py

编辑:您需要将代码放在主文件的正上方

client = commands.Bot(command_prefix = '!')

把它放进去。用齿轮将其复制回文件夹。

就在之后

import discord
import os
from discord.ext import commands

将以下行粘贴到主文件

from gamelogic import onPRIUTil, playerone_zero_current_hp, playertwo_zero_current_hp, Roll_not_strike, Roll_true_strike
 类似资料:
  • 我是Jmeter的新手。录音时我遇到了以下错误。请帮助我 错误: java.net.UnknownHostException:www.gstatic.com 在org . Apache . jmeter . protocol . http . sampler . httph C4 impl . executerequest(httph C4 impl . Java:939)在org . Apach

  • Cog

    Cog 是一个适用于 macOS 10.13+ 的免费开源音频播放器,基于 GPL-2 协议进行分发。Cog 包含一些来自第三方的代码,这些代码有他们自己的许可协议/版权。 特点: 无缝播放 自动更新 Last.fm 支持 全局热键 桌面通知 随机播放,包括专辑和曲目 重复单曲、专辑或整个播放列表 从 HTTP(S) 源播放,包括直播和托管文件 支持的格式包括 MP3 WAV AAC (LC, H

  • 正如标题所示,我为不和谐机器人创建的齿轮文件无法读取/写入保存在同一文件夹中的. json文件。我尝试过手动指定文件路径,将. json文件移动到主bot文件的根文件夹,重命名. json文件,但都无济于事。移动. json文件可以阻止bot抛出丢失的文件错误,但它会使cog文件不再同时工作,这实际上造成了两个没有解决方案的问题。 cog文件如下所示 如果有帮助的话,主文件如下 在使用诸如“.”之

  • EventLicensetype.hbm.xml文件: 下面是EventInfo类。同样,在实际文件中有更多的字段,这只是重要的部分: 下面是EventLicenseType类 为什么它不能直接删除记录?为什么它要更新??我还尝试将代码更改为下面的代码,并得到相同的错误。 谁能帮我解决我缺少的东西,或者给我指明正确的方向?

  • 我正在这里逐字逐句地获取Twilio文档之后的对话。 这将返回一个: 但是,如果我像这样提供对话服务ID: 我正确地获取了对话对象。在我的例子中,我使用webhooks来捕捉参与者何时加入对话,因为事件不返回服务sid,只返回对话sid,这使我尝试做的事情变得复杂。我错过了什么?

  • 如何更改Springboot Kafka的日志记录?我在我们的Splunk服务器上看到了超过200万条消息,但什么都不起作用: 还尝试了: 依赖性: 这些都没有任何作用。我错过什么了吗?