Per Server Prefixs
Solution 1:
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.guild.id
return prefixes.get(id, default_prefix)
bot = commands.Bot(command_prefix=prefix)
...
Solution 2:
Late answer, but for those others also looking for this you can use the get_prefix
function.
It's very similar to Patrick Haugh's version, but a little different maybe because of different discord library versions?
prefixes = ['.','!','s.','k!']
ser_pref={'server id':['.',',']}
def get_prefix(bot, msg):
if msg.guild.id in ser_pref:
return commands.when_mentioned_or(*ser_pref['server id'])
return commands.when_mentioned_or(*prefixes)(bot, msg)
bot = commands.Bot(command_prefix=get_prefix)
You can then later make commands to allow more custom server prefixes to other servers by adding their options to the dict
Post a Comment for "Per Server Prefixs"