mirror of
https://github.com/brandons209/Red-bot-Cogs.git
synced 2024-05-19 20:03:17 +12:00
added per event channel setting
This commit is contained in:
parent
a1941c5f92
commit
409ce90bb6
|
@ -33,13 +33,12 @@ class Welcome(getattr(commands, "Cog", object)):
|
|||
guild_defaults = {
|
||||
'enabled': False,
|
||||
'channel': None,
|
||||
'leave_channel': None,
|
||||
'ban_channel': None,
|
||||
'date': None,
|
||||
'join': {
|
||||
'enabled': True,
|
||||
'delete': False,
|
||||
'last': None,
|
||||
'channel': None,
|
||||
'counter': 0,
|
||||
'whisper': {
|
||||
'state': 'off',
|
||||
|
@ -51,18 +50,21 @@ class Welcome(getattr(commands, "Cog", object)):
|
|||
'leave': {
|
||||
'enabled': True,
|
||||
'delete': False,
|
||||
'channel': None,
|
||||
'last': None,
|
||||
'messages': [default_leave],
|
||||
},
|
||||
'ban': {
|
||||
'enabled': True,
|
||||
'delete': False,
|
||||
'channel': None,
|
||||
'last': None,
|
||||
'messages': [default_ban],
|
||||
},
|
||||
'unban': {
|
||||
'enabled': True,
|
||||
'delete': False,
|
||||
'channel': None,
|
||||
'last': None,
|
||||
'messages': [default_unban],
|
||||
}
|
||||
|
@ -85,9 +87,11 @@ class Welcome(getattr(commands, "Cog", object)):
|
|||
guild = ctx.guild
|
||||
c = await self.config.guild(guild).all()
|
||||
|
||||
channel = await self.__get_channel(ctx.guild, "join")
|
||||
leave_channel = await self.__get_channel(ctx.guild, "leave")
|
||||
ban_channel = await self.__get_channel(ctx.guild, "ban")
|
||||
channel = await self.__get_channel(guild, "default")
|
||||
join_channel = await self.__get_channel(guild, "join")
|
||||
leave_channel = await self.__get_channel(guild, "leave")
|
||||
ban_channel = await self.__get_channel(guild, "ban")
|
||||
unban_channel = await self.__get_channel(guild, "unban")
|
||||
|
||||
j = c['join']
|
||||
jw = j['whisper']
|
||||
|
@ -99,34 +103,36 @@ class Welcome(getattr(commands, "Cog", object)):
|
|||
emb = discord.Embed(color=await ctx.embed_color(), title="Current Welcome Settings")
|
||||
emb.add_field(name="General", value=(
|
||||
"**Enabled:** {}\n"
|
||||
"**Channel:** #{}\n"
|
||||
"**Leave Channel:** #{}\n"
|
||||
"**Ban/Unban Channel:** #{}\n"
|
||||
).format(c['enabled'], channel, leave_channel, ban_channel))
|
||||
"**Channel:** #{}\n."
|
||||
).format(c['enabled'], channel))
|
||||
emb.add_field(name="Join", value=(
|
||||
"**Enabled:** {}\n"
|
||||
"**Channel:** {}\n"
|
||||
"**Delete previous:** {}\n"
|
||||
"**Whisper state:** {}\n"
|
||||
"**Whisper message:** {}\n"
|
||||
"**Messages:** {}; do `{prefix}welcomeset join msg list` for a list\n"
|
||||
"**Bot message:** {}"
|
||||
).format(j['enabled'], j['delete'], jw['state'], jw['message'] if len(jw['message']) <= 50 else jw['message'][:50] + "...", len(j['messages']), j['bot'],
|
||||
).format(j['enabled'], join_channel, j['delete'], jw['state'], jw['message'] if len(jw['message']) <= 50 else jw['message'][:50] + "...", len(j['messages']), j['bot'],
|
||||
prefix=ctx.prefix))
|
||||
emb.add_field(name="Leave", value=(
|
||||
"**Enabled:** {}\n"
|
||||
"**Channel:** {}\n"
|
||||
"**Delete previous:** {}\n"
|
||||
"**Messages:** {}; do `{prefix}welcomeset leave msg list` for a list\n"
|
||||
).format(v['enabled'], v['delete'], len(v['messages']), prefix=ctx.prefix))
|
||||
).format(v['enabled'], leave_channel, v['delete'], len(v['messages']), prefix=ctx.prefix))
|
||||
emb.add_field(name="Ban", value=(
|
||||
"**Enabled:** {}\n"
|
||||
"**Channel:** {}\n"
|
||||
"**Delete previous:** {}\n"
|
||||
"**Messages:** {}; do `{prefix}welcomeset ban msg list` for a list\n"
|
||||
).format(b['enabled'], b['delete'], len(b['messages']), prefix=ctx.prefix))
|
||||
).format(b['enabled'], ban_channel, b['delete'], len(b['messages']), prefix=ctx.prefix))
|
||||
emb.add_field(name="Unban", value=(
|
||||
"**Enabled:** {}\n"
|
||||
"**Channel:** {}\n"
|
||||
"**Delete previous:** {}\n"
|
||||
"**Messages:** {}; do `{prefix}welcomeset unban msg list` for a list\n"
|
||||
).format(u['enabled'], u['delete'], len(u['messages']), prefix=ctx.prefix))
|
||||
).format(u['enabled'], unban_channel, u['delete'], len(u['messages']), prefix=ctx.prefix))
|
||||
|
||||
await ctx.send(embed=emb)
|
||||
else:
|
||||
|
@ -135,6 +141,7 @@ class Welcome(getattr(commands, "Cog", object)):
|
|||
" Channel: {}\n"
|
||||
" Join:\n"
|
||||
" Enabled: {}\n"
|
||||
" Channel: {}\n"
|
||||
" Delete previous: {}\n"
|
||||
" Whisper:\n"
|
||||
" State: {}\n"
|
||||
|
@ -143,21 +150,24 @@ class Welcome(getattr(commands, "Cog", object)):
|
|||
" Bot message: {}\n"
|
||||
" Leave:\n"
|
||||
" Enabled: {}\n"
|
||||
" Channel: {}\n"
|
||||
" Delete previous: {}\n"
|
||||
" Messages: {}; do '{prefix}welcomeset leave msg list' for a list\n"
|
||||
" Ban:\n"
|
||||
" Enabled: {}\n"
|
||||
" Channel: {}\n"
|
||||
" Delete previous: {}\n"
|
||||
" Messages: {}; do '{prefix}welcomeset ban msg list' for a list\n"
|
||||
" Unban:\n"
|
||||
" Enabled: {}\n"
|
||||
" Channel: {}\n"
|
||||
" Delete previous: {}\n"
|
||||
" Messages: {}; do '{prefix}welcomeset unban msg list' for a list\n"
|
||||
"").format(c['enabled'], channel,
|
||||
j['enabled'], j['delete'], jw['state'], jw['message'], len(j['messages']), j['bot'],
|
||||
v['enabled'], v['delete'], len(v['messages']),
|
||||
b['enabled'], b['delete'], len(b['messages']),
|
||||
u['enabled'], u['delete'], len(u['messages']),
|
||||
j['enabled'], join_channel, j['delete'], jw['state'], jw['message'], len(j['messages']), j['bot'],
|
||||
v['enabled'], leave_channel, v['delete'], len(v['messages']),
|
||||
b['enabled'], ban_channel, b['delete'], len(b['messages']),
|
||||
u['enabled'], unban_channel, u['delete'], len(u['messages']),
|
||||
prefix=ctx.prefix),
|
||||
"Current Welcome settings:"
|
||||
)
|
||||
|
@ -200,44 +210,6 @@ class Welcome(getattr(commands, "Cog", object)):
|
|||
"").format(channel)
|
||||
)
|
||||
|
||||
@welcomeset.command(name='leave-channel')
|
||||
async def welcomeset_leave_channel(self, ctx: commands.Context, channel: discord.TextChannel):
|
||||
"""Sets the channel to be used for leave_channel event notices."""
|
||||
|
||||
if not self.__can_speak_in(channel):
|
||||
await ctx.send(
|
||||
("I do not have permission to send messages in {0.mention}. Check your permission settings and try again."
|
||||
"").format(channel)
|
||||
)
|
||||
return
|
||||
|
||||
guild = ctx.guild
|
||||
await self.config.guild(guild).leave_channel.set(channel.id)
|
||||
|
||||
await ctx.send(
|
||||
("I will now send leave event notices to {0.mention}."
|
||||
"").format(channel)
|
||||
)
|
||||
|
||||
@welcomeset.command(name='ban-channel')
|
||||
async def welcomeset_channel(self, ctx: commands.Context, channel: discord.TextChannel):
|
||||
"""Sets the channel to be used for event notices."""
|
||||
|
||||
if not self.__can_speak_in(channel):
|
||||
await ctx.send(
|
||||
("I do not have permission to send messages in {0.mention}. Check your permission settings and try again."
|
||||
"").format(channel)
|
||||
)
|
||||
return
|
||||
|
||||
guild = ctx.guild
|
||||
await self.config.guild(guild).ban_channel.set(channel.id)
|
||||
|
||||
await ctx.send(
|
||||
("I will now send ban/unban event notices to {0.mention}."
|
||||
"").format(channel)
|
||||
)
|
||||
|
||||
@welcomeset.group(name='join')
|
||||
async def welcomeset_join(self, ctx: commands.Context):
|
||||
"""Change settings for join notices."""
|
||||
|
@ -386,6 +358,26 @@ class Welcome(getattr(commands, "Cog", object)):
|
|||
"")
|
||||
)
|
||||
|
||||
@welcomeset_join.command(name='channel')
|
||||
async def welcomeset_join_channel(self, ctx: commands.Context, channel: discord.TextChannel):
|
||||
"""Set channel for join notices
|
||||
|
||||
If not set, join notices are sent to the default events channel.
|
||||
"""
|
||||
if not self.__can_speak_in(channel):
|
||||
await ctx.send(
|
||||
("I do not have permission to send messages in {0.mention}. Check your permission settings and try again."
|
||||
"").format(channel)
|
||||
)
|
||||
return
|
||||
|
||||
await self.config.guild(ctx.guild).join.channel.set(channel.id)
|
||||
|
||||
await ctx.send(
|
||||
("I will now send join event notices to {0.mention}."
|
||||
"").format(channel)
|
||||
)
|
||||
|
||||
@welcomeset.group(name='leave')
|
||||
async def welcomeset_leave(self, ctx: commands.Context):
|
||||
"""Change settings for leave notices."""
|
||||
|
@ -410,6 +402,26 @@ class Welcome(getattr(commands, "Cog", object)):
|
|||
|
||||
await self.__toggledelete(ctx, on_off, 'leave')
|
||||
|
||||
@welcomeset_leave.command(name='channel')
|
||||
async def welcomeset_leave_channel(self, ctx: commands.Context, channel: discord.TextChannel):
|
||||
"""Set channel for leave notices
|
||||
|
||||
If not set, leave notices are sent to the default events channel.
|
||||
"""
|
||||
if not self.__can_speak_in(channel):
|
||||
await ctx.send(
|
||||
("I do not have permission to send messages in {0.mention}. Check your permission settings and try again."
|
||||
"").format(channel)
|
||||
)
|
||||
return
|
||||
|
||||
await self.config.guild(ctx.guild).leave.channel.set(channel.id)
|
||||
|
||||
await ctx.send(
|
||||
("I will now send leave event notices to {0.mention}."
|
||||
"").format(channel)
|
||||
)
|
||||
|
||||
@welcomeset_leave.group(name='msg')
|
||||
async def welcomeset_leave_msg(self, ctx: commands.Context):
|
||||
"""Manage leave message formats."""
|
||||
|
@ -468,6 +480,26 @@ class Welcome(getattr(commands, "Cog", object)):
|
|||
|
||||
await self.__toggledelete(ctx, on_off, 'ban')
|
||||
|
||||
@welcomeset_ban.command(name='channel')
|
||||
async def welcomeset_ban_channel(self, ctx: commands.Context, channel: discord.TextChannel):
|
||||
"""Set channel for ban notices
|
||||
|
||||
If not set, ban notices are sent to the default events channel.
|
||||
"""
|
||||
if not self.__can_speak_in(channel):
|
||||
await ctx.send(
|
||||
("I do not have permission to send messages in {0.mention}. Check your permission settings and try again."
|
||||
"").format(channel)
|
||||
)
|
||||
return
|
||||
|
||||
await self.config.guild(ctx.guild).ban.channel.set(channel.id)
|
||||
|
||||
await ctx.send(
|
||||
("I will now send ban event notices to {0.mention}."
|
||||
"").format(channel)
|
||||
)
|
||||
|
||||
@welcomeset_ban.group(name='msg')
|
||||
async def welcomeset_ban_msg(self, ctx: commands.Context):
|
||||
"""Manage ban message formats."""
|
||||
|
@ -526,6 +558,26 @@ class Welcome(getattr(commands, "Cog", object)):
|
|||
|
||||
await self.__toggledelete(ctx, on_off, 'unban')
|
||||
|
||||
@welcomeset_unban.command(name='channel')
|
||||
async def welcomeset_unban_channel(self, ctx: commands.Context, channel: discord.TextChannel):
|
||||
"""Set channel for unban notices
|
||||
|
||||
If not set, unban notices are sent to the default events channel.
|
||||
"""
|
||||
if not self.__can_speak_in(channel):
|
||||
await ctx.send(
|
||||
("I do not have permission to send messages in {0.mention}. Check your permission settings and try again."
|
||||
"").format(channel)
|
||||
)
|
||||
return
|
||||
|
||||
await self.config.guild(ctx.guild).unban.channel.set(channel.id)
|
||||
|
||||
await ctx.send(
|
||||
("I will now send unban event notices to {0.mention}."
|
||||
"").format(channel)
|
||||
)
|
||||
|
||||
@welcomeset_unban.group(name='msg')
|
||||
async def welcomeset_unban_msg(self, ctx: commands.Context):
|
||||
"""Manage unban message formats."""
|
||||
|
@ -730,25 +782,34 @@ class Welcome(getattr(commands, "Cog", object)):
|
|||
"""Gets the best text channel to use for event notices.
|
||||
|
||||
Order of priority:
|
||||
1. User-defined channel
|
||||
2. Guild's system channel (if bot can speak in it)
|
||||
3. First channel that the bot can speak in
|
||||
1. User-defined channel for event
|
||||
2. Cog-defined channel for all events
|
||||
3. Guild's system channel (if bot can speak in it)
|
||||
4. First channel that the bot can speak in
|
||||
"""
|
||||
|
||||
channel = None
|
||||
|
||||
if event == 'join':
|
||||
channel_id = await self.config.guild(guild).channel()
|
||||
channel_id = await self.config.guild(guild).join.channel()
|
||||
elif event == 'leave':
|
||||
channel_id = await self.config.guild(guild).leave_channel()
|
||||
elif event == 'ban' or event == 'unban':
|
||||
channel_id = await self.config.guild(guild).ban_channel()
|
||||
channel_id = await self.config.guild(guild).leave.channel()
|
||||
elif event == 'ban':
|
||||
channel_id = await self.config.guild(guild).ban.channel()
|
||||
elif event == 'unban':
|
||||
channel_id = await self.config.guild(guild).unban.channel()
|
||||
elif event == 'default':
|
||||
channel_id = await self.config.guild(guild).channel()
|
||||
else:
|
||||
raise TypeError("Wrong event type in __get_channel.")
|
||||
|
||||
if channel_id is not None:
|
||||
channel = guild.get_channel(channel_id)
|
||||
|
||||
if channel is None or not self.__can_speak_in(channel):
|
||||
channel_id = await self.config.guild(guild).channel()
|
||||
channel = guild.get_channel(channel_id)
|
||||
|
||||
if channel is None or not self.__can_speak_in(channel):
|
||||
channel = guild.system_channel
|
||||
|
||||
|
|
Loading…
Reference in a new issue