Я создаю бот-диск, используя перезапись discord.py! Я пытался создать cammand, чтобы изменить префикс бота и сохранить информацию в файле json, чтобы разные серверы могли использовать разные префиксы. Затем, когда я запускаю код, он сначала кажется работающим, но затем, когда я набираю что-то в чате сервера, бот в нем выдает мне сообщение об ошибке:
Ignoring exception in on_message Traceback (most recent call last):
File "C:\Users\hugos\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\discord\client.py", line 312, in _run_event
await coro(*args, **kwargs)
File "C:\Users\hugos\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\discord\ext\commands\bot.py", line 930, in on_message
await self.process_commands(message)
File "C:\Users\hugos\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\discord\ext\commands\bot.py", line 926, in process_commands
ctx = await self.get_context(message)
File "C:\Users\hugos\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\discord\ext\commands\bot.py", line 842, in get_context
prefix = await self.get_prefix(message)
File "C:\Users\hugos\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\discord\ext\commands\bot.py", line 787, in get_prefix
ret = await discord.utils.maybe_coroutine(prefix, self, message)
File "C:\Users\hugos\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\discord\utils.py", line 319, in maybe_coroutine
return await value
File "C:\Users\hugos\Desktop\bot\bot.py", line 12, in get_prefix
prefixes=json.load(f)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.752.0_x64__qbz5n2kfra8p0\lib\json\__init__.py", line 293, in load
return loads(fp.read(),
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.752.0_x64__qbz5n2kfra8p0\lib\json\__init__.py", line 357, in loads
return _default_decoder.decode(s)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.752.0_x64__qbz5n2kfra8p0\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\ProgramFiles\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.752.0_x64__qbz5n2kfra8p0\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Когда я приглашаю бота в новый сервер дает мне ошибку симуляции.
Вот код:
import discord
import random
import time
import os
from sqlite3 import connect
from discord.ext import commands
import json
async def get_prefix(client, message):
filePathNameWExt = "C:/Users/hugos/Desktop/bot/prefixes.json"
with open(filePathNameWExt, 'r') as f:
prefixes=json.load(f)
return prefixes[str(message.guild.id)]
client = commands.Bot(command_prefix = get_prefix)
client.remove_command('help')
action = False;
modroles = ['bot commanders'];
Muted_role = None;
Member_role = None;
@client.event
async def on_ready(ctx=client):
print('im online now')
print('logged on as: ' + str(client.user))
print('id: ' + str(client.user.id))
activity = discord.Activity(name='hej', type=2)
await client.change_presence(status=discord.Status.idle, activity=activity)
@client.event
async def on_guild_join(guild):
filePathNameWExt = "C:/Users/hugos/Desktop/bot/prefixes.json"
with open(filePathNameWExt, 'r') as f:
prefixes=json.load(f)
prefixes[str(guild.id)] = '!'
with open(filePathNameWExt, 'w') as f:
json.dump(prefixes, f, indent=4)
@client.event
async def on_guild_remove(guild):
filePathNameWExt = "C:/Users/hugos/Desktop/bot/prefixes.json"
with open(filePathNameWExt, 'r') as f:
prefixes=json.load(f)
prefixes.pop(str(guild.id))
with open(filePathNameWExt, 'w') as f:
json.dump(prefixes, f, indent=4)
@client.command()
async def prefix(ctx, nprefix=None):
filePathNameWExt = "C:/Users/hugos/Desktop/bot/prefixes.json"
with open(filePathNameWExt, 'r') as f:
prefixes=json.load(f)
if not nprefix:
print('hej')
embed = discord.Embed(title='Prefix', description=f'**{prefixes[str(ctx.guild.id)]}**', color=0x009696)
await ctx.send(embed=embed)
else:
old_prefix = prefixes[str(ctx.guild.id)]
prefixes[str(ctx.guild.id)] = nprefix
with open(filePathNameWExt, 'w') as f:
json.dump(prefixes, f, indent=4)
embed = discord.Embed(title='Prefix byte', description=f'{ctx.message.author.mention} bytte prefix för den här servern\n\nGamla prefix:**{old_prefix}**\nNytt prefix:**{nprefix}**', color=0x009696)
await ctx.send(embed=embed)```