You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Fox-V3/leaver/leaver.py

62 lines
1.9 KiB

import discord
from redbot.core import Config, checks, commands
from redbot.core.bot import Red
from redbot.core.commands import Cog, Context
class Leaver(Cog):
"""
Creates a goodbye message when people leave
"""
def __init__(self, bot: Red):
super().__init__()
self.bot = bot
self.config = Config.get_conf(self, identifier=9811198108111121, force_registration=True)
default_guild = {"channel": ""}
self.config.register_guild(**default_guild)
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@commands.group(aliases=["setleaver"])
@checks.mod_or_permissions(administrator=True)
async def leaverset(self, ctx):
"""Adjust leaver settings"""
if ctx.invoked_subcommand is None:
pass
@leaverset.command()
async def channel(self, ctx: Context):
"""Choose the channel to send leave messages to"""
guild = ctx.guild
await self.config.guild(guild).channel.set(ctx.channel.id)
await ctx.maybe_send_embed("Channel set to " + ctx.channel.name)
@commands.Cog.listener()
async def on_member_remove(self, member: discord.Member):
guild = member.guild
if await self.bot.cog_disabled_in_guild(self, guild):
return
channel = await self.config.guild(guild).channel()
if channel != "":
channel = guild.get_channel(channel)
out = "{}{} has left the server".format(
member, member.nick if member.nick is not None else ""
)
if await self.bot.embed_requested(channel, member):
await channel.send(
embed=discord.Embed(
description=out, color=(await self.bot.get_embed_color(channel))
)
)
else:
await channel.send(out)
else:
pass