我不确定我是否在这里遗漏了一些东西,但是我的cogs文件夹中有一个无法加载的.py文件。一直给我错误```上面的异常是以下异常的直接原因:
discord.ext.commands.errors.ExtensionNotFound: Extension 'cogs.determineHit' could not be loaded.
以下是我的文件位置的图片: 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
,我不确定这里缺少什么。任何帮助将不胜感激。
编辑:
在请求追溯请求之前,我开始考虑发生了什么,并得出结论,文件determineHit.py
实际上并没有使用任何不和谐的命令。发生的是用户输入的命令与!roll
不符,机器人发现!roll
命令指向determineHit.py
中的一种方法,其中所有计算均已完成(该文件中的代码为纯python ,什么都不需要调用discord命令),然后将这些数据返回给机器人,所有需要发送到聊天室的数据都存储在称为msg
的字典中,然后有一个for循环以打印出所有必需的信息。
例如,在determineHit.py
中,您可能会发现:
msg = []
msg.append("Hi Peoples!")
msg.append("Wow! You hit someone!")
msg.append("Aww! You missed!")
msg.append("These are Examples!)
return msg
回到机器人本身,它将解压缩msg
并用for循环打印出其中存储的语句:
for msg_item in msg:
await ctx.send(msg_item)
长话短说,我假设因为determineHit.py
并没有使用discord库中的任何内容,因此它不必是齿轮,它可以在同一目录中的另一个文件夹中。
所以我做到了:
希望能解决我的问题。 (determineHit.py
下的其他文件是相同的,它们只是包含计算之类的python文件,它们不调用任何ordord库中的任何方法。)
很明显,我错了。当我尝试使用from determineHit import *
运行漫游器时,我得到了扩展错误,这开始了所有这一切。在没有上述操作的情况下运行它,然后bot启动,但显然无法运行该命令,因为它调用的方法不存在,因为它看不到determineHit.py
很抱歉,比您需要的罗than的多。但是无论如何...
我也进行了有人要求的回溯,并且得到了以下内容:
"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
提醒您,此操作是在之后完成的,我将determineHit.py
从齿轮中移出,并将其放在“ gamelogic”文件夹中。
但是,如果确实有帮助,我将determineHit.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.
对不起,如果我只是使事情变得更复杂。以为我找到了自己的答案。
答案 0 :(得分:2)
我希望看到实际的回溯。
您可以创建字典,列出每个齿轮并查看是否有帮助。
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 = '!')
将defineHit.py放入带有齿轮的文件夹中。
紧接着
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