I was wondering how I would go about allowing every server my bot is connected to, to set their own prefix. I am using the async version of dpy with Commands ext.
I would assume you would store the prefix's and server name in a .json file, but I don't know how you would write them or check the file for them.
Thanks
You can do this with dynamic command prefixes. Write a function or coroutine that takes a Bot
and a Message
and outputs the appropriate prefix for that message. Assuming you had a JSON of server ids to prefixes:
{
"1234": "!",
"5678": "?"
}
You can load that json into a dictionary and then look up server ids in that dictionary. Below I also include a default prefix, but you could also raise a CommandError
or something for servers with no specific prefix.
from discord import commands
import json
with open("prefixes.json") as f:
prefixes = json.load(f)
default_prefix = "!"
def prefix(bot, message):
id = message.server.id
return prefixes.get(id, default_prefix)
bot = commands.Bot(command_prefix=prefix)
...