mirror of
https://github.com/brandons209/Red-bot-Cogs.git
synced 2024-06-02 18:45: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 = {
|
guild_defaults = {
|
||||||
'enabled': False,
|
'enabled': False,
|
||||||
'channel': None,
|
'channel': None,
|
||||||
'leave_channel': None,
|
|
||||||
'ban_channel': None,
|
|
||||||
'date': None,
|
'date': None,
|
||||||
'join': {
|
'join': {
|
||||||
'enabled': True,
|
'enabled': True,
|
||||||
'delete': False,
|
'delete': False,
|
||||||
'last': None,
|
'last': None,
|
||||||
|
'channel': None,
|
||||||
'counter': 0,
|
'counter': 0,
|
||||||
'whisper': {
|
'whisper': {
|
||||||
'state': 'off',
|
'state': 'off',
|
||||||
|
@ -51,18 +50,21 @@ class Welcome(getattr(commands, "Cog", object)):
|
||||||
'leave': {
|
'leave': {
|
||||||
'enabled': True,
|
'enabled': True,
|
||||||
'delete': False,
|
'delete': False,
|
||||||
|
'channel': None,
|
||||||
'last': None,
|
'last': None,
|
||||||
'messages': [default_leave],
|
'messages': [default_leave],
|
||||||
},
|
},
|
||||||
'ban': {
|
'ban': {
|
||||||
'enabled': True,
|
'enabled': True,
|
||||||
'delete': False,
|
'delete': False,
|
||||||
|
'channel': None,
|
||||||
'last': None,
|
'last': None,
|
||||||
'messages': [default_ban],
|
'messages': [default_ban],
|
||||||
},
|
},
|
||||||
'unban': {
|
'unban': {
|
||||||
'enabled': True,
|
'enabled': True,
|
||||||
'delete': False,
|
'delete': False,
|
||||||
|
'channel': None,
|
||||||
'last': None,
|
'last': None,
|
||||||
'messages': [default_unban],
|
'messages': [default_unban],
|
||||||
}
|
}
|
||||||
|
@ -85,9 +87,11 @@ class Welcome(getattr(commands, "Cog", object)):
|
||||||
guild = ctx.guild
|
guild = ctx.guild
|
||||||
c = await self.config.guild(guild).all()
|
c = await self.config.guild(guild).all()
|
||||||
|
|
||||||
channel = await self.__get_channel(ctx.guild, "join")
|
channel = await self.__get_channel(guild, "default")
|
||||||
leave_channel = await self.__get_channel(ctx.guild, "leave")
|
join_channel = await self.__get_channel(guild, "join")
|
||||||
ban_channel = await self.__get_channel(ctx.guild, "ban")
|
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']
|
j = c['join']
|
||||||
jw = j['whisper']
|
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 = discord.Embed(color=await ctx.embed_color(), title="Current Welcome Settings")
|
||||||
emb.add_field(name="General", value=(
|
emb.add_field(name="General", value=(
|
||||||
"**Enabled:** {}\n"
|
"**Enabled:** {}\n"
|
||||||
"**Channel:** #{}\n"
|
"**Channel:** #{}\n."
|
||||||
"**Leave Channel:** #{}\n"
|
).format(c['enabled'], channel))
|
||||||
"**Ban/Unban Channel:** #{}\n"
|
|
||||||
).format(c['enabled'], channel, leave_channel, ban_channel))
|
|
||||||
emb.add_field(name="Join", value=(
|
emb.add_field(name="Join", value=(
|
||||||
"**Enabled:** {}\n"
|
"**Enabled:** {}\n"
|
||||||
|
"**Channel:** {}\n"
|
||||||
"**Delete previous:** {}\n"
|
"**Delete previous:** {}\n"
|
||||||
"**Whisper state:** {}\n"
|
"**Whisper state:** {}\n"
|
||||||
"**Whisper message:** {}\n"
|
"**Whisper message:** {}\n"
|
||||||
"**Messages:** {}; do `{prefix}welcomeset join msg list` for a list\n"
|
"**Messages:** {}; do `{prefix}welcomeset join msg list` for a list\n"
|
||||||
"**Bot message:** {}"
|
"**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))
|
prefix=ctx.prefix))
|
||||||
emb.add_field(name="Leave", value=(
|
emb.add_field(name="Leave", value=(
|
||||||
"**Enabled:** {}\n"
|
"**Enabled:** {}\n"
|
||||||
|
"**Channel:** {}\n"
|
||||||
"**Delete previous:** {}\n"
|
"**Delete previous:** {}\n"
|
||||||
"**Messages:** {}; do `{prefix}welcomeset leave msg list` for a list\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=(
|
emb.add_field(name="Ban", value=(
|
||||||
"**Enabled:** {}\n"
|
"**Enabled:** {}\n"
|
||||||
|
"**Channel:** {}\n"
|
||||||
"**Delete previous:** {}\n"
|
"**Delete previous:** {}\n"
|
||||||
"**Messages:** {}; do `{prefix}welcomeset ban msg list` for a list\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=(
|
emb.add_field(name="Unban", value=(
|
||||||
"**Enabled:** {}\n"
|
"**Enabled:** {}\n"
|
||||||
|
"**Channel:** {}\n"
|
||||||
"**Delete previous:** {}\n"
|
"**Delete previous:** {}\n"
|
||||||
"**Messages:** {}; do `{prefix}welcomeset unban msg list` for a list\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)
|
await ctx.send(embed=emb)
|
||||||
else:
|
else:
|
||||||
|
@ -135,6 +141,7 @@ class Welcome(getattr(commands, "Cog", object)):
|
||||||
" Channel: {}\n"
|
" Channel: {}\n"
|
||||||
" Join:\n"
|
" Join:\n"
|
||||||
" Enabled: {}\n"
|
" Enabled: {}\n"
|
||||||
|
" Channel: {}\n"
|
||||||
" Delete previous: {}\n"
|
" Delete previous: {}\n"
|
||||||
" Whisper:\n"
|
" Whisper:\n"
|
||||||
" State: {}\n"
|
" State: {}\n"
|
||||||
|
@ -143,21 +150,24 @@ class Welcome(getattr(commands, "Cog", object)):
|
||||||
" Bot message: {}\n"
|
" Bot message: {}\n"
|
||||||
" Leave:\n"
|
" Leave:\n"
|
||||||
" Enabled: {}\n"
|
" Enabled: {}\n"
|
||||||
|
" Channel: {}\n"
|
||||||
" Delete previous: {}\n"
|
" Delete previous: {}\n"
|
||||||
" Messages: {}; do '{prefix}welcomeset leave msg list' for a list\n"
|
" Messages: {}; do '{prefix}welcomeset leave msg list' for a list\n"
|
||||||
" Ban:\n"
|
" Ban:\n"
|
||||||
" Enabled: {}\n"
|
" Enabled: {}\n"
|
||||||
|
" Channel: {}\n"
|
||||||
" Delete previous: {}\n"
|
" Delete previous: {}\n"
|
||||||
" Messages: {}; do '{prefix}welcomeset ban msg list' for a list\n"
|
" Messages: {}; do '{prefix}welcomeset ban msg list' for a list\n"
|
||||||
" Unban:\n"
|
" Unban:\n"
|
||||||
" Enabled: {}\n"
|
" Enabled: {}\n"
|
||||||
|
" Channel: {}\n"
|
||||||
" Delete previous: {}\n"
|
" Delete previous: {}\n"
|
||||||
" Messages: {}; do '{prefix}welcomeset unban msg list' for a list\n"
|
" Messages: {}; do '{prefix}welcomeset unban msg list' for a list\n"
|
||||||
"").format(c['enabled'], channel,
|
"").format(c['enabled'], channel,
|
||||||
j['enabled'], j['delete'], jw['state'], jw['message'], len(j['messages']), j['bot'],
|
j['enabled'], join_channel, j['delete'], jw['state'], jw['message'], len(j['messages']), j['bot'],
|
||||||
v['enabled'], v['delete'], len(v['messages']),
|
v['enabled'], leave_channel, v['delete'], len(v['messages']),
|
||||||
b['enabled'], b['delete'], len(b['messages']),
|
b['enabled'], ban_channel, b['delete'], len(b['messages']),
|
||||||
u['enabled'], u['delete'], len(u['messages']),
|
u['enabled'], unban_channel, u['delete'], len(u['messages']),
|
||||||
prefix=ctx.prefix),
|
prefix=ctx.prefix),
|
||||||
"Current Welcome settings:"
|
"Current Welcome settings:"
|
||||||
)
|
)
|
||||||
|
@ -200,44 +210,6 @@ class Welcome(getattr(commands, "Cog", object)):
|
||||||
"").format(channel)
|
"").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')
|
@welcomeset.group(name='join')
|
||||||
async def welcomeset_join(self, ctx: commands.Context):
|
async def welcomeset_join(self, ctx: commands.Context):
|
||||||
"""Change settings for join notices."""
|
"""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')
|
@welcomeset.group(name='leave')
|
||||||
async def welcomeset_leave(self, ctx: commands.Context):
|
async def welcomeset_leave(self, ctx: commands.Context):
|
||||||
"""Change settings for leave notices."""
|
"""Change settings for leave notices."""
|
||||||
|
@ -410,6 +402,26 @@ class Welcome(getattr(commands, "Cog", object)):
|
||||||
|
|
||||||
await self.__toggledelete(ctx, on_off, 'leave')
|
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')
|
@welcomeset_leave.group(name='msg')
|
||||||
async def welcomeset_leave_msg(self, ctx: commands.Context):
|
async def welcomeset_leave_msg(self, ctx: commands.Context):
|
||||||
"""Manage leave message formats."""
|
"""Manage leave message formats."""
|
||||||
|
@ -468,6 +480,26 @@ class Welcome(getattr(commands, "Cog", object)):
|
||||||
|
|
||||||
await self.__toggledelete(ctx, on_off, 'ban')
|
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')
|
@welcomeset_ban.group(name='msg')
|
||||||
async def welcomeset_ban_msg(self, ctx: commands.Context):
|
async def welcomeset_ban_msg(self, ctx: commands.Context):
|
||||||
"""Manage ban message formats."""
|
"""Manage ban message formats."""
|
||||||
|
@ -526,6 +558,26 @@ class Welcome(getattr(commands, "Cog", object)):
|
||||||
|
|
||||||
await self.__toggledelete(ctx, on_off, 'unban')
|
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')
|
@welcomeset_unban.group(name='msg')
|
||||||
async def welcomeset_unban_msg(self, ctx: commands.Context):
|
async def welcomeset_unban_msg(self, ctx: commands.Context):
|
||||||
"""Manage unban message formats."""
|
"""Manage unban message formats."""
|
||||||
|
@ -730,25 +782,34 @@ class Welcome(getattr(commands, "Cog", object)):
|
||||||
"""Gets the best text channel to use for event notices.
|
"""Gets the best text channel to use for event notices.
|
||||||
|
|
||||||
Order of priority:
|
Order of priority:
|
||||||
1. User-defined channel
|
1. User-defined channel for event
|
||||||
2. Guild's system channel (if bot can speak in it)
|
2. Cog-defined channel for all events
|
||||||
3. First channel that the bot can speak in
|
3. Guild's system channel (if bot can speak in it)
|
||||||
|
4. First channel that the bot can speak in
|
||||||
"""
|
"""
|
||||||
|
|
||||||
channel = None
|
channel = None
|
||||||
|
|
||||||
if event == 'join':
|
if event == 'join':
|
||||||
channel_id = await self.config.guild(guild).channel()
|
channel_id = await self.config.guild(guild).join.channel()
|
||||||
elif event == 'leave':
|
elif event == 'leave':
|
||||||
channel_id = await self.config.guild(guild).leave_channel()
|
channel_id = await self.config.guild(guild).leave.channel()
|
||||||
elif event == 'ban' or event == 'unban':
|
elif event == 'ban':
|
||||||
channel_id = await self.config.guild(guild).ban_channel()
|
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:
|
else:
|
||||||
raise TypeError("Wrong event type in __get_channel.")
|
raise TypeError("Wrong event type in __get_channel.")
|
||||||
|
|
||||||
if channel_id is not None:
|
if channel_id is not None:
|
||||||
channel = guild.get_channel(channel_id)
|
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):
|
if channel is None or not self.__can_speak_in(channel):
|
||||||
channel = guild.system_channel
|
channel = guild.system_channel
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue