- Не используй глобальную переменную в асинхронных функциях - это рак.
- У тебя есть пара косяков, вот фикс:
import json
import discord
SETTINGS_FILE = "settings.json"
def get_settings():
try:
with open(SETTINGS_FILE, "r") as f:
return json.load(f)
except FileNotFoundError:
return {}
def save_settings(settings):
with open(SETTINGS_FILE, "w") as f:
json.dump(settings, f)
@bot.command(name="set_role")
@commands.has_permissions(administrator=True)
async def set_role(ctx, role_name: str, channel_id: int):
settings = get_settings()
settings[role_name] = channel_id
save_settings(settings)
await ctx.send(f"Роль для {role_name} установлена на <@&{channel_id}>")
await set_role(ctx, "report_role", 123456789012345678)
await set_role(ctx, "idea_role", 987654321098765432)