diff --git a/src/esoserver.py b/src/esoserver.py new file mode 100644 index 0000000..6c4a2dd --- /dev/null +++ b/src/esoserver.py @@ -0,0 +1,23 @@ +import util +import random +import logging +import discord + +import metrics + +def setup(bot): + @bot.listen() + async def on_message(message): + if message.guild.id == util.config["esoserver"]["id"]: + for role in message.role_mentions: + if role.id == util.config["esoserver"]["transfer_role"]: # transfer the role from sender to other pinged person + if len(message.mentions) == 1: + await message.author.remove_roles(role, reason="untransfer unrole") + await message.mentions[0].add_roles(role, reason="transfer role") + return + for user in message.mentions: + for role in user.roles: + if role.id == util.config["esoserver"]["transfer_role"]: # transfer from pingee to pinger + await user.remove_roles(role, reason="untransfer unrole") + await message.author.add_roles(role, reason="transfer role") + return \ No newline at end of file diff --git a/src/telephone.py b/src/telephone.py index 8367de7..c7de6c9 100644 --- a/src/telephone.py +++ b/src/telephone.py @@ -173,6 +173,12 @@ When you want to end a call, use hangup. await self.bot.database.commit() await ctx.send("Configured.") + @telephone.command(aliases=["rcall"], brief="Dial another telephone channel.") + async def rdial(self, ctx): + # TODO: this is not very performant + random = (await self.bot.database.execute_fetchone("SELECT id FROM telephone_config ORDER BY RANDOM()"))["id"] + await self.dial(ctx, random) + @telephone.command(aliases=["call"], brief="Dial another telephone channel.") async def dial(self, ctx, address): # basic checks - ensure this is a phone channel and has no other open calls diff --git a/src/util.py b/src/util.py index 1bfb59b..f980d37 100644 --- a/src/util.py +++ b/src/util.py @@ -265,7 +265,8 @@ extensions = ( "commands", "userdata", "irc_link", - "duckduckgo" + "duckduckgo", + "esoserver" ) # https://github.com/SawdustSoftware/simpleflake/blob/master/simpleflake/simpleflake.py