@xzartsust
Учусь

Как сделать так что бы на хосте обновлялся файл JSON(использую хост Heroku) — discord.py rewrite?

Использую библиотеку и файл 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": "."
}


Единственный способ, который я нашел на данный момент, это использовать базу данных.
Возможно можно обойтись без базы данных?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
Alexandre888
@Alexandre888
Javascript-разработчик
а чем вам база данных не угодила?
1) скорость
2) компактность
3) лёгкость в использовании
4) данные не хранятся в файлах
5) обеспечение целостности данных
и т.д

если вы планируете раскручивать бота в дальнейшем, то json просто не справится с большим объёмом информации - я советую вам всё-таки переосмыслить своё решение.

если же насчёт вашей проблемы, убедитесь для начала, что на хероку включено автоматическое обновление файлов:
5f2bd6a909517668219084.png
так-то я вообще не совсем уверен, что файл сможет обновляться
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы