Использую библиотеку и файл JSON для изменения префиксов на разных серверах.
То бишь если мой бот заходит на какой то сервер то в файл JSON заноситься айди этого сервера и дефолтный префикс . и когда на сервере меняют префикс то в префикс который в файле JSON должен измениться на той который указал пользователь на сервере.
Если запустить бота локально то все ок все работе, но если это все закинуть на GitHub а потом на хост, то при когда пользователь то в файле нету измен.
Вот сам код по изменению префикса:
def get_prefix(bot, message):
with open('prefixserv.json','r') as f:
prefixserv= json.load(f)
return prefixserv[str(message.guild.id)]
bot=commands.Bot(command_prefix=get_prefix)
@bot.event
async def on_guild_join(guild):
with open('prefixserv.json','r') as f:
prefixserv= json.load(f)
prefixserv[str(guild.id)]= '.'
with open('prefixserv.json','w') as f:
json.dump(prefixserv, f, indent=4)
@bot.event
async def on_giuld_remove(guild):
with open('prefixserv.json','r') as f:
prefixserv= json.load(f)
prefixserv.pop(str(guild.id))
with open('prefixserv.json','w') as f:
json.dump(prefixserv, f, indent=4)
@bot.command(aliases=['change_prefix','new_prefix','nprefix'])
async def prefix(ctx,prefix):
with open('prefixserv.json', 'r') as f:
prefixserv = json.load(f)
prefixserv[str(ctx.guild.id)] = prefix
with open('prefixserv.json', 'w') as f:
json.dump(prefixserv, f, indent=4)
await ctx.send(f'Префикс был изменен на {prefix}')
Файл JSON:
{
"732623824293724221": "/",
"615807835162411029": "."
}
Единственный способ, который я нашел на данный момент, это использовать базу данных.
Возможно можно обойтись без базы данных?