正如标题所示,我为不和谐机器人创建的齿轮文件无法读取/写入保存在同一文件夹中的. json文件。我尝试过手动指定文件路径,将. json文件移动到主bot文件的根文件夹,重命名. json文件,但都无济于事。移动. json文件可以阻止bot抛出丢失的文件错误,但它会使cog文件不再同时工作,这实际上造成了两个没有解决方案的问题。
cog文件如下所示
import discord
import logging
import json
import os
from discord.ext import commands
class Prefixes(commands.Cog):
def __init__(self, client):
self.client = client
#Sets default prefix for server on first join
@commands.Cog.listener()
async def on_guild_join(guild):
with open('prefixes.json', 'r') as f:
prefixes = json.load(f)
prefixes[str(guild.id)] = '.'
with open ('prefixes.json', 'w') as f:
json.dump(prefixes, f, indent = 4)
#Command for assigning a new prefix
@commands.command()
@commands.has_role("admin" == True)
async def change_prefix(ctx, prefix):
with open('prefixes.json', 'r') as f:
prefixes = json.load(f)
prefixes[str(ctx.guild.id)] = prefix
with open ('prefixes.json', 'w') as f:
json.dump(prefixes, f, indent = 4)
await ctx.send(f'Prefix changed to: {prefix}')
#Placeholder Prefix Command
def get_prefix(client, message):
with open('prefixes.json', 'r') as f:
prefixes = json.load(f)
return prefixes[str(message.guild.id)]
client = commands.Bot(command_prefix = get_prefix)
#Removes the stored prefix when bot is kicked
async def on_guild_remove(guild):
with open('prefixes.json', 'r') as f:
prefixes = json.load(f)
prefixes.pop(str(guild.id))
with open ('prefixes.json', 'w') as f:
json.dump(prefixes, f, indent= 4)
#Connects Cog to bot
def setup(client):
client.add_cog(Prefixes(client))
如果有帮助的话,主文件如下
from cogs.Prefix_changer import Prefixes, get_prefix
import discord
import logging
import os
import discord.ext.commands.errors
from discord.ext import commands
client = commands.Bot(command_prefix = get_prefix)
#Error messages
@client.event
async def on_command_error(ctx, error):
if isinstance(error, commands.MissingRequiredArgument):
await ctx.send('Please specify a valid command extension.')
elif isinstance(error, commands.CommandNotFound):
await ctx.send('Command is not valid.')
elif isinstance(error, commands.ExtensionNotLoaded):
await ctx.send('Extension was not loaded.')
elif isinstance(error, commands.ExtensionNotFound):
await ctx.send('Extension could not be found.')
elif isinstance(error, commands.ExtensionAlreadyLoaded):
await ctx.send('Extension has already been loaded.')
#Loading Cogs
@client.command()
async def load(ctx, extension):
client.load_extension(f'cogs.[extension]')
#unloading Cogs
@client.command()
async def unload(ctx, extension):
client.unload_extension(f'cogs.[extension]')
#Searches the primary directory for Cogs folder
for filename in os.listdir('./cogs'):
if filename.endswith('.py'):
client.load_extension(f'cogs.{filename[:-3]}')
client.run('token removed')
在使用诸如“.”之类的前缀之前,bot运行正常或以“$”为例。一旦使用前缀,它将抛出以下错误:
分/文件/Py括号bot/Main。py“忽略on_消息回溯中的异常(最近一次调用):File”/Library/Frameworks/Python。framework/Versions/3.9/lib/python3。9/站点包/discord/客户端。py“,第343行,在_run_event wait-coro(*args,**kwargs)文件“/库/框架/Python中。framework/Versions/3.9/lib/python3。9/站点包/discord/ext/commands/bot。py”,第979行,在on_message wait self.process_命令(消息)文件“/Library/Frameworks/Python中。framework/Versions/3.9/lib/python3。9/站点包/discord/ext/commands/bot。py”,第975行,进程中命令ctx=wait self.get_上下文(消息)文件“/Library/Frameworks/Python。framework/Versions/3.9/lib/python3。9/站点包/discord/ext/commands/bot。py”,第886行,在get_context prefix=wait self.get_prefix(消息)文件“/Library/Frameworks/Python中。framework/Versions/3.9/lib/python3。9/站点包/discord/ext/commands/bot。py”,第831行,在get_prefix ret=wait discord.utils.maybe_coroutine(前缀,self,message)文件“/Library/Frameworks/Python中。framework/Versions/3.9/lib/python3。9/站点包/discord/utils。py“,第341行,在coroutine value=f(*args,**kwargs)文件“/Users/vincent/Documents/py-bracket-bot/cogs/Prefix\u-changer中。py“,第34行,在get_前缀中,open('prefixes.json','r')作为f:FileNotFoundError:[Errno 2]没有这样的文件或目录:'prefixes.json'
如果不是很明显的话,答案是肯定的。json文件是前缀。json。
将文件路径设置为包含cogs/
修复了它。我不知道cog不会在所在的同一目录中查找。json文件。
我的应用程序中有一个rails自定义记录器。 路径-/ /current/log 文件-custom.json custom.json.20210712 这是我的要求 旋转后的文件应该放在不同的位置,即/ /current/log/archive/custom.json.20210712 旋转文件的名称也应该有hour和min,也就是说,我需要,而不是。格式化
我正在尝试访问。我已经使用ebconfig将json文件下载到/tmp/目录,以在S3上存储私钥。 但它给了我以下错误 错误:EACCES:权限被拒绝,打开“/tmp/firebaseadminsdk”。json’ 文件中有一段说 第二个条目使用S3Auth身份验证方法从指定的URL下载私钥,并将其保存到/etc/pki/tls/certs/server。钥匙然后,代理服务器可以从此位置读取私钥,
我在大学已经学习了4周的JavaScript,两周前在我自己的时间里开始学习Java。事实证明,它很有用,因为我们有一个项目,我们必须制定一个程序(这是我们为项目选择的)。 问题是,虽然我知道Java的大部分基础知识,但我对制作我们想要制作的程序知之甚少,我所有的其他团队成员甚至从未接触过Java,有些人甚至在课堂上与JavaScript作斗争。 对不起,顺便说一句,我只是想让人们了解我的来历。
我不确定我是否错过了这里的东西,但我有一个. py文件在我的齿轮文件夹,不会加载。不断给我错误”“上述异常是以下异常的直接原因: discord.ext.commands.errors.扩展没有找到:扩展cogs.determine命中无法加载。 以下是我的文件位置的图片:https://imgur.com/a/gBbX4lM 我也会在这里复制代码供您查看,但会剪掉大部分代码,因为它相当长。如果你
问题内容: 我有此功能可以将图像保存在tmp文件夹中 但是,当我打开应用程序的temp文件夹时,它是空的。将图像保存在temp文件夹中,我做错了什么? 问题答案: 不是获取的文件路径的正确方法,请改用: 或者 更好的是, 仅使用URL: 更好的是,使用 并检查成功或失败: Swift 3/4更新:
问题内容: 我编写了一个小模块,该模块首先在目录中找到所有文件,然后合并它们。但是,从目录打开这些文件时遇到问题。我确保我的文件和目录名称正确,并且文件实际上在目录中。 下面是代码。 下面是错误。 问题答案: listdir仅返回文件名:https ://docs.python.org/2/library/os.html#os.listdir您需要完整路径才能打开文件。在打开文件之前,还要检查以确