Automatically update configured vanity URLs (#91)
This commit is contained in:
parent
e4ee55a1fd
commit
97f534eb17
2 changed files with 38 additions and 0 deletions
34
robocop_ng/cogs/vanity_url.py
Normal file
34
robocop_ng/cogs/vanity_url.py
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
from discord import Guild
|
||||||
|
from discord.ext import tasks
|
||||||
|
from discord.ext.commands import Cog
|
||||||
|
|
||||||
|
|
||||||
|
class VanityUrl(Cog):
|
||||||
|
def __init__(self, bot):
|
||||||
|
self.bot = bot
|
||||||
|
self.vanity_codes: dict[int, str] = self.bot.config.vanity_codes
|
||||||
|
self.check_changed_vanity_codes.start()
|
||||||
|
|
||||||
|
def cog_unload(self):
|
||||||
|
self.check_changed_vanity_codes.cancel()
|
||||||
|
|
||||||
|
async def update_vanity_code(self, guild: Guild, code: str):
|
||||||
|
if "VANITY_URL" in guild.features and guild.vanity_url_code != code:
|
||||||
|
await guild.edit(
|
||||||
|
reason="Configured vanity code was different", vanity_code=code
|
||||||
|
)
|
||||||
|
|
||||||
|
@Cog.listener()
|
||||||
|
async def on_guild_update(self, before: Guild, after: Guild):
|
||||||
|
if after.id in self.vanity_codes:
|
||||||
|
await self.update_vanity_code(after, self.vanity_codes[after.id])
|
||||||
|
|
||||||
|
@tasks.loop(hours=12)
|
||||||
|
async def check_changed_vanity_codes(self):
|
||||||
|
await self.bot.wait_until_ready()
|
||||||
|
for guild, vanity_code in self.vanity_codes.items():
|
||||||
|
await self.update_vanity_code(self.bot.get_guild(guild), vanity_code)
|
||||||
|
|
||||||
|
|
||||||
|
async def setup(bot):
|
||||||
|
await bot.add_cog(VanityUrl(bot))
|
|
@ -38,6 +38,7 @@ initial_cogs = [
|
||||||
"cogs.links",
|
"cogs.links",
|
||||||
"cogs.remind",
|
"cogs.remind",
|
||||||
"cogs.robocronp",
|
"cogs.robocronp",
|
||||||
|
"cogs.vanity_url",
|
||||||
"cogs.meme",
|
"cogs.meme",
|
||||||
"cogs.invites",
|
"cogs.invites",
|
||||||
"cogs.yubicootp",
|
"cogs.yubicootp",
|
||||||
|
@ -64,6 +65,9 @@ min_age = datetime.timedelta(minutes=15)
|
||||||
# The bot will only work in these guilds
|
# The bot will only work in these guilds
|
||||||
guild_whitelist = [269333940928512010] # ReSwitched discord
|
guild_whitelist = [269333940928512010] # ReSwitched discord
|
||||||
|
|
||||||
|
# Custom invite URL codes
|
||||||
|
vanity_codes = {269333940928512010: "reswitched"}
|
||||||
|
|
||||||
# Named roles to be used with .approve and .revoke
|
# Named roles to be used with .approve and .revoke
|
||||||
# Example: .approve User hacker
|
# Example: .approve User hacker
|
||||||
named_roles = {
|
named_roles = {
|
||||||
|
|
Loading…
Reference in a new issue