added 'decide' command, server commands send embeds now

This commit is contained in:
Akumatic 2019-10-05 18:05:18 +02:00
parent f31da623ed
commit bc0a5ac0dc
2 changed files with 210 additions and 152 deletions

View File

@ -9,7 +9,7 @@ class Fun(commands.Cog):
async def ping(self, ctx): async def ping(self, ctx):
"""Ping, Pong""" """Ping, Pong"""
e = discord.Embed(title="<< Ping >>", description=ctx.author.mention, color=discord.Color.blue()) e = discord.Embed(title="<< Ping >>", description=ctx.author.mention, color=discord.Color.blue())
e.set_author(name=ctx.author, icon_url=ctx.author.avatar_url) e.set_author(name=f"{ctx.author.display_name} ({ctx.author})", icon_url=ctx.author.avatar_url)
e.add_field(name=":ping_pong:", value="Pong!") e.add_field(name=":ping_pong:", value="Pong!")
await ctx.send(embed=e) await ctx.send(embed=e)
@ -17,7 +17,7 @@ class Fun(commands.Cog):
async def dice(self, ctx, countstr: str = "6", dicesstr: str = "1"): async def dice(self, ctx, countstr: str = "6", dicesstr: str = "1"):
"""Throws a dice.""" """Throws a dice."""
e = discord.Embed(description=ctx.author.mention) e = discord.Embed(description=ctx.author.mention)
e.set_author(name=ctx.author, icon_url=ctx.author.avatar_url) e.set_author(name=f"{ctx.author.display_name} ({ctx.author})", icon_url=ctx.author.avatar_url)
try: try:
count = int(countstr) count = int(countstr)
dices = int(dicesstr) dices = int(dicesstr)
@ -49,7 +49,7 @@ class Fun(commands.Cog):
@commands.command(name="8ball") @commands.command(name="8ball")
async def magic8ball(self, ctx, *, msg: str = None): async def magic8ball(self, ctx, *, msg: str = None):
e = discord.Embed(title="<< 8Ball >>", description=ctx.author.mention) e = discord.Embed(title="<< 8Ball >>", description=ctx.author.mention)
e.set_author(name=ctx.author, icon_url=ctx.author.avatar_url) e.set_author(name=f"{ctx.author.display_name} ({ctx.author})", icon_url=ctx.author.avatar_url)
if msg is None: if msg is None:
e.color = discord.Color.red() e.color = discord.Color.red()
e.add_field(name=":8ball:", value="You need to specify a question.") e.add_field(name=":8ball:", value="You need to specify a question.")
@ -72,7 +72,7 @@ class Fun(commands.Cog):
async def coin(self, ctx): async def coin(self, ctx):
"""Flip a coin.""" """Flip a coin."""
e = discord.Embed(title="<< Flip a coin >>", description=ctx.author.mention, color=discord.Color.blue()) e = discord.Embed(title="<< Flip a coin >>", description=ctx.author.mention, color=discord.Color.blue())
e.set_author(name=ctx.author, icon_url=ctx.author.avatar_url) e.set_author(name=f"{ctx.author.display_name} ({ctx.author})", icon_url=ctx.author.avatar_url)
e.add_field(name="Your coin shows ", value=f"{random.choice(['Heads', 'Tails'])}") e.add_field(name="Your coin shows ", value=f"{random.choice(['Heads', 'Tails'])}")
await ctx.send(embed=e) await ctx.send(embed=e)
@ -81,7 +81,7 @@ class Fun(commands.Cog):
"""Play Rock, Paper, Scissors with the Bot """Play Rock, Paper, Scissors with the Bot
Input 'r' for Rock, 'p' for Paper and 's' for Scissors""" Input 'r' for Rock, 'p' for Paper and 's' for Scissors"""
e = discord.Embed(title="<< Rock, Paper, Scissors >>", description=ctx.author.mention) e = discord.Embed(title="<< Rock, Paper, Scissors >>", description=ctx.author.mention)
e.set_author(name=ctx.author, icon_url=ctx.author.avatar_url) e.set_author(name=f"{ctx.author.display_name} ({ctx.author})", icon_url=ctx.author.avatar_url)
if user == None or str.lower(user) not in ["r", "p", "s"]: if user == None or str.lower(user) not in ["r", "p", "s"]:
e.color=discord.Color.red() e.color=discord.Color.red()
e.add_field(name=":moyai::newspaper::scissors:", value="Invalid input. Please use 'r', 'p' or 's'") e.add_field(name=":moyai::newspaper::scissors:", value="Invalid input. Please use 'r', 'p' or 's'")
@ -105,7 +105,7 @@ class Fun(commands.Cog):
"""Rolls a random number between min and max. """Rolls a random number between min and max.
Default values are 0 and 100""" Default values are 0 and 100"""
e = discord.Embed(description=ctx.author.mention) e = discord.Embed(description=ctx.author.mention)
e.set_author(name=ctx.author, icon_url=ctx.author.avatar_url) e.set_author(name=f"{ctx.author.display_name} ({ctx.author})", icon_url=ctx.author.avatar_url)
try: try:
a = int(astr) a = int(astr)
b = int(bstr) b = int(bstr)
@ -124,6 +124,24 @@ class Fun(commands.Cog):
e.add_field(name=":game_die:", value = random.randint(a, b)) e.add_field(name=":game_die:", value = random.randint(a, b))
await ctx.send(embed=e) await ctx.send(embed=e)
@commands.command()
async def decide(self, ctx, *, msg: str = None):
"""Decides between given options. Every option should be separated by a ','"""
e = discord.Embed(description=ctx.author.mention)
e.set_author(name=f"{ctx.author.display_name} ({ctx.author})", icon_url=ctx.author.avatar_url)
if msg == None:
e.title="<< Decide >>"
e.color = discord.Color.red()
e.add_field(name="No Options given", value="Please give at least one option")
return await ctx.send(embed=e)
msg = msg.split(",")
e.color = discord.Color.blue()
e.title = f"<< Decide between {len(msg)} options >>"
for i in range(len(msg)):
e.add_field(name=f"Option {i+1}", value=msg[i])
e.add_field(name="Decision", value=random.choice(msg))
await ctx.send(embed=e)
#Setup #Setup
def setup(bot): def setup(bot):
bot.add_cog(Fun(bot)) bot.add_cog(Fun(bot))

View File

@ -15,6 +15,84 @@ class Server(commands.Cog):
self.bot.serverCfg[str(id)]["server"][key] = default self.bot.serverCfg[str(id)]["server"][key] = default
self.bot.writeJSON("server.json", self.bot.serverCfg) self.bot.writeJSON("server.json", self.bot.serverCfg)
def getCheckOrX(self, b: bool = False):
return ":white_check_mark:" if b else ":x:"
async def toggleEvent(self, ctx, type: str):
self.serverCfgCheck(ctx.guild.id, type, False)
temp = not self.bot.serverCfg[str(ctx.guild.id)]["server"][type]
self.bot.serverCfg[str(ctx.guild.id)]["server"][type] = temp
self.bot.writeJSON("server.json", self.bot.serverCfg)
e = discord.Embed(description=ctx.author.mention, color=discord.Color.green())
e.set_author(name=f"{ctx.author.display_name} ({ctx.author})", icon_url=ctx.author.avatar_url)
e.add_field(name=f"`{type}` successfully set to {temp}", value=self.getCheckOrX(temp))
await ctx.send(embed=e)
async def setChannel(self, ctx, type: str, channel : discord.TextChannel = None, idStr : str = None):
e = discord.Embed(description=ctx.author.mention)
e.set_author(name=f"{ctx.author.display_name} ({ctx.author})", icon_url=ctx.author.avatar_url)
if channel is not None:
self.serverCfgCheck(ctx.guild.id, type, 0)
self.bot.serverCfg[str(ctx.guild.id)]["server"][type] = channel.id
self.bot.writeJSON("server.json", self.bot.serverCfg)
e.color = discord.Color.green()
e.add_field(name=f"`{type}` successfully set to", value=channel.mention)
return await ctx.send(embed=e)
if idStr is None:
e.color = discord.Color.red()
e.add_field(name=f"`{type}` not set", value="Please specify a valid channel")
return await ctx.send(embed=e)
try:
id = int(idStr)
except:
e.color = discord.Color.red()
e.add_field(name=f"`{type}` not set", value="Please specify a valid channel")
return await ctx.send(embed=e)
if id not in [c.id for c in ctx.guild.channels]:
e.color = discord.Color.red()
e.add_field(name="Channel not found", value=f"Channel {id} does not exist on this server.")
return await ctx.send(embed=e)
self.serverCfgCheck(ctx.guild.id, type, 0)
self.bot.serverCfg[str(ctx.guild.id)]["server"][type] = id
self.bot.writeJSON("server.json", self.bot.serverCfg)
e.color = discord.Color.green()
e.add_field(name=f"`{type}` successfully set to", value=self.bot.get_channel(id).mention)
await ctx.send(embed=e)
async def resetChannel(self, ctx, type: str):
self.serverCfgCheck(ctx.guild.id, type, 0)
self.bot.serverCfg[str(ctx.guild.id)]["server"][type] = 0
self.bot.writeJSON("server.json", self.bot.serverCfg)
e = discord.Embed(description=ctx.author.mention)
e.set_author(name=f"{ctx.author.display_name} ({ctx.author})", icon_url=ctx.author.avatar_url)
e.add_field(name=f"`{type}`", value="has been successfully reset")
e.color = discord.Color.green()
await ctx.send(embed=e)
async def channelNotSpecified(self, event: str, flag: str, channel: str, setChannelCmd:str, toggleCmd: str, guild):
if self.bot.serverCfg[str(guild.id)]["server"]["modChannel"] != 0:
e = discord.Embed(title=f"<< {event} Event >>", color=discord.Color.red())
e.add_field(inline=False, name=f"The `{flag}` flag is set ...",
value=f"but no `{channel}` was specified.")
e.add_field(name="You can set it up with",
value=f"`{self.bot.command_prefix}{setChannelCmd}`")
e.add_field(name="You can disable it with",
value=f"`{self.bot.command_prefix}{toggleCmd}`")
chan = self.bot.get_channel(self.bot.serverCfg[str(guild.id)]["server"]["modChannel"])
await chan.send(embed=e)
else:
e = discord.Embed(title="<< Member Join Event >>", color=discord.Color.red())
e.add_field(inline=False, name=f"The `{flag}` flag in **{guild.name}** is set ...",
value=f"but no `{channel}` was specified.")
e.add_field(name="You can set it up with",
value=f"`{self.bot.command_prefix}{setChannelCmd}`")
e.add_field(name="You can disable it with",
value=f"`{self.bot.command_prefix}{toggleCmd}`")
e.add_field(name="You received this message directly because no `modChannel` was specified. You can"
" set it up with", value=f"`{self.bot.command_prefix}setModChannel`")
user = guild.owner
await user.send(embed=e)
#Listener #Listener
@commands.Cog.listener() @commands.Cog.listener()
async def on_member_join(self, member): async def on_member_join(self, member):
@ -27,25 +105,15 @@ class Server(commands.Cog):
if self.bot.serverCfg[str(member.guild.id)]["server"]["joinMessage"] != "": if self.bot.serverCfg[str(member.guild.id)]["server"]["joinMessage"] != "":
await member.send(self.bot.serverCfg[str(member.guild.id)]["server"]["joinMessage"]) await member.send(self.bot.serverCfg[str(member.guild.id)]["server"]["joinMessage"])
if self.bot.serverCfg[str(member.guild.id)]["server"]["memberEventChannel"] != 0: if self.bot.serverCfg[str(member.guild.id)]["server"]["memberEventChannel"] != 0:
e = discord.Embed(color=0x32c832) e = discord.Embed(title="<< Member Join Event >>", color=discord.Color.green())
e.set_author(name = str(member) + " joined the server.", icon_url=member.avatar_url) e.set_author(name=f"{member} joined the server.", icon_url=member.avatar_url)
e.add_field(name="ID", value=str(member.id), inline=False) e.add_field(name="ID", value=f"{member.id}", inline=False)
e.add_field(name="Mention", value=member.mention, inline=False) e.add_field(name="Mention", value=member.mention, inline=False)
chan = self.bot.get_channel(self.bot.serverCfg[str(member.guild.id)]["server"]["memberEventChannel"]) chan = self.bot.get_channel(self.bot.serverCfg[str(member.guild.id)]["server"]["memberEventChannel"])
await chan.send(embed=e) await chan.send(embed=e)
else: else:
if self.bot.serverCfg[str(member.guild.id)]["server"]["modChannel"] != 0: await self.channelNotSpecified("Member Join", "logMemberEvent", "memberEventChannel",
chan = self.bot.get_channel(self.bot.serverCfg[str(member.guild.id)]["server"]["modChannel"]) "setMemberEventChannel", "toggleMemberEvent", member.guild)
await chan.send("The ***logMemberEvent*** flag is set, but no ***memberEventChannel*** was specifie"
"d. You can set it with `{0}setMemberEventChannel <id>` or disable ***logMemberEvent*** with `{0}to"
"ggleMemberEvent`".format(self.bot.command_prefix))
else:
user = member.guild.owner
await user.send("The ***logMemberEvent*** flag in your server \"{0}\" is set, but no ***memberEvent"
"Channel*** was specified. You can set it with `{1}setMemberEventChannel <id>` or disable ***logMem"
"berEvent*** with `{1}toggleMemberEvent`.\nYou received this message directly because no ***modChan"
"nel*** was specified. You can set it with `{1}setModChannel <id>`".format(member.guild.name,
self.bot.command_prefix))
@commands.Cog.listener() @commands.Cog.listener()
async def on_member_remove(self, member): async def on_member_remove(self, member):
@ -55,25 +123,16 @@ class Server(commands.Cog):
if self.bot.serverCfg[str(member.guild.id)]["server"]["logMemberEvent"]: if self.bot.serverCfg[str(member.guild.id)]["server"]["logMemberEvent"]:
if self.bot.serverCfg[str(member.guild.id)]["server"]["memberEventChannel"] != 0: if self.bot.serverCfg[str(member.guild.id)]["server"]["memberEventChannel"] != 0:
e = discord.Embed(color=0xc83232) e = discord.Embed(title="<< Member Leave Event >>", color=discord.Color.red())
e.set_author(name = str(member) + " left the server.", icon_url=member.avatar_url) e.set_author(name=f"{member} left the server.", icon_url=member.avatar_url)
e.add_field(name="ID", value=str(member.id), inline=False) e.add_field(name="ID", value=f"{member.id}", inline=False)
e.add_field(name="Mention", value=member.mention, inline=False) e.add_field(name="Mention", value=member.mention, inline=False)
e.add_field(name="Last known name", value=member.display_name, inline=False)
chan = self.bot.get_channel(self.bot.serverCfg[str(member.guild.id)]["server"]["memberEventChannel"]) chan = self.bot.get_channel(self.bot.serverCfg[str(member.guild.id)]["server"]["memberEventChannel"])
await chan.send(embed=e) await chan.send(embed=e)
else: else:
if self.bot.serverCfg[str(member.guild.id)]["server"]["modChannel"] != 0: await self.channelNotSpecified("Member Leave", "logMemberEvent", "memberEventChannel",
chan = self.bot.get_channel(self.bot.serverCfg[str(member.guild.id)]["server"]["modChannel"]) "setMemberEventChannel", "toggleMemberEvent", member.guild)
await chan.send("The ***logMemberEvent*** flag is set, but no ***memberEventChannel*** was specifie"
"d. You can set it with `{0}setMemberEventChannel <id>` or disable ***logMemberEvent*** with `{0}to"
"ggleMemberEvent`".format(self.bot.command_prefix))
else:
user = member.guild.owner
await user.send("The ***logMemberEvent*** flag in your server \"{0}\" is set, but no ***memberEvent"
"Channel*** was specified. You can set it with `{1}setMemberEventChannel <id>` or disable ***logMem"
"berEvent*** with `{1}toggleMemberEvent`.\nYou received this message directly because no ***modChan"
"nel*** was specified. You can set it with `{1}setModChannel <id>`".format(member.guild.name,
self.bot.command_prefix))
@commands.Cog.listener() @commands.Cog.listener()
async def on_message_edit(self, before, after): async def on_message_edit(self, before, after):
@ -85,51 +144,29 @@ class Server(commands.Cog):
if self.bot.serverCfg[str(before.guild.id)]["server"]["logMessageEvent"] and before.content != after.content: if self.bot.serverCfg[str(before.guild.id)]["server"]["logMessageEvent"] and before.content != after.content:
if self.bot.serverCfg[str(before.guild.id)]["server"]["messageEventChannel"] != 0: if self.bot.serverCfg[str(before.guild.id)]["server"]["messageEventChannel"] != 0:
e = discord.Embed(color=0x32c8c8) e = discord.Embed(color=0x32c8c8, title="<< Message Edit Event >>")
e.set_author(name="{} edited a message.".format(before.author), icon_url=before.author.avatar_url) e.set_author(name=f"{before.author} edited a message.", icon_url=before.author.avatar_url)
e.add_field(name="Profile", value=before.author.mention, inline=False) e.add_field(name="Profile", value=before.author.mention, inline=True)
e.add_field(name="Channel", value=before.channel.mention, inline=False) e.add_field(name="Channel", value=before.channel.mention, inline=True)
e.add_field(name="URL", value=after.jump_url, inline=False) e.add_field(name="URL", value=after.jump_url, inline=False)
if len(before.content) < 1025: if len(before.content) < 1025:
e.add_field(name="Message before", value=before.content, inline=False) e.add_field(name="Message before", value=before.content, inline=False)
else: else:
i = 1 e.add_field(name="Message before", value=before.content[:1024], inline=False)
temp = before.content e.add_field(name="[...]", value=before.content[1024:], inline=False)
while len(temp) > 1018:
e.add_field(name="Message before ({})".format(i), value="{}[...]".format(temp[:1019],
inline=False))
temp = temp[1019:]
i += 1
e.add_field(name="Message before ({})".format(i), value="{}".format(temp, inline=False))
if len(after.content) < 1025: if len(after.content) < 1025:
e.add_field(name="Message after", value=after.content, inline=False) e.add_field(name="Message after", value=after.content, inline=False)
else: else:
i = 1 e.add_field(name="Message after", value=after.content[:1024], inline=False)
temp = after.content e.add_field(name="[...]", value=after.content[1024:], inline=False)
while len(temp) > 1018:
e.add_field(name="Message after ({})".format(i), value="{}[...]".format(temp[:1019],
inline=False))
temp = temp[1019:]
i += 1
e.add_field(name="Message after ({})".format(i), value="{}".format(temp, inline=False))
chan = self.bot.get_channel(self.bot.serverCfg[str(before.guild.id)]["server"]["messageEventChannel"]) chan = self.bot.get_channel(self.bot.serverCfg[str(before.guild.id)]["server"]["messageEventChannel"])
await chan.send(embed=e) await chan.send(embed=e)
else: else:
if self.bot.serverCfg[str(before.guild.id)]["server"]["modChannel"] != 0: await self.channelNotSpecified("Message Edit", "logMessageEvent", "messageEventChannel",
chan = self.bot.get_channel(self.bot.serverCfg[str(before.guild.id)]["server"]["modChannel"]) "setMessageEventChannel", "toggleMessageEvent", before.guild)
await chan.send("The ***logMessageEvent*** flag is set, but no ***messageEventChannel*** was specif"
"ied. You can set it with `{0}setMessageEventChannel <id>` or disable ***logMessageEvent*** with `"
"{0}toggleMessageEvent`".format(self.bot.command_prefix))
else:
user = before.guild.owner
await user.send("The ***logMessageEvent*** flag in your server \"{0}\" is set, but no ***messageEve"
"ntChannel*** was specified. You can set it with `{1}setMessageEventChannel <id>` or disable ***log"
"MessageEvent*** with `{1}toggleMessageEvent`.\nYou received this message directly because no ***mo"
"dChannel*** was specified. You can set it with `{1}setModChannel <id>`".format(before.guild.name,
self.bot.command_prefix))
@commands.Cog.listener() @commands.Cog.listener()
async def on_message_delete(self, message): async def on_message_delete(self, message):
@ -141,133 +178,120 @@ class Server(commands.Cog):
if self.bot.serverCfg[str(message.guild.id)]["server"]["logMessageEvent"]: if self.bot.serverCfg[str(message.guild.id)]["server"]["logMessageEvent"]:
if self.bot.serverCfg[str(message.guild.id)]["server"]["messageEventChannel"] != 0: if self.bot.serverCfg[str(message.guild.id)]["server"]["messageEventChannel"] != 0:
e = discord.Embed(color=0xc83232) e = discord.Embed(color=0xc83232, title="<< Message Delete Event >>")
e.set_author(name="{}'s message got deleted.".format(message.author), icon_url=message.author.avatar_url) e.set_author(name=f"{message.author}'s message got deleted.", icon_url=message.author.avatar_url)
e.add_field(name="Profile", value=message.author.mention, inline=False) e.add_field(name="Profile", value=message.author.mention, inline=True)
e.add_field(name="Channel", value=message.channel.mention, inline=False) e.add_field(name="Channel", value=message.channel.mention, inline=True)
if message.content: if message.content:
if len(message.content) < 1025: if len(message.content) < 1025:
e.add_field(name="Message", value=message.content, inline=False) e.add_field(name="Message", value=message.content, inline=False)
else: else:
i = 1 e.add_field(name="Message", value=message.content[:1024], inline=False)
temp = message.content e.add_field(name="[...]", value=message.content[1024:], inline=False)
while len(temp) > 1018:
e.add_field("Message ({})".format(i), value="{}[...]".format(temp[:1019], inline=False))
temp = temp[1019:]
i += 1
e.add_field("Message ({})".format(i), value="{}".format(temp, inline=False))
num = len(message.attachments) num = len(message.attachments)
if num > 0: if num > 0:
e.add_field(name="Attachments", value="The message had {} attachment(s)".format(num),inline=False) e.add_field(name="Attachments", value=f"The message had {num} attachment(s)", inline=False)
for a in message.attachments: for a in message.attachments:
e.add_field(name="File Name", value=a.filename, inline=False) e.add_field(name="File Name", value=a.filename, inline=False)
chan = self.bot.get_channel(self.bot.serverCfg[str(message.guild.id)]["server"]["messageEventChannel"]) chan = self.bot.get_channel(self.bot.serverCfg[str(message.guild.id)]["server"]["messageEventChannel"])
await chan.send(embed=e) await chan.send(embed=e)
else: else:
if self.bot.serverCfg[str(message.guild.id)]["server"]["modChannel"] != 0: await self.channelNotSpecified("Message Delete", "logMessageEvent", "messageEventChannel",
chan = self.bot.get_channel(self.bot.serverCfg[str(message.guild.id)]["server"]["modChannel"]) "setMessageEventChannel", "toggleMessageEvent", message.guild)
await chan.send("The ***logMessageEvent*** flag is set, but no ***messageEventChannel*** was specif"
"ied. You can set it with `{0}setMessageEventChannel <id>` or disable ***logMessageEvent*** with `"
"{0}toggleMessageEvent`".format(self.bot.command_prefix))
else:
user = message.guild.owner
await user.send("The ***logMessageEvent*** flag in your server \"{0}\" is set, but no ***messageEve"
"ntChannel*** was specified. You can set it with `{1}setMessageEventChannel <id>` or disable ***log"
"MessageEvent*** with `{1}toggleMessageEvent`.\nYou received this message directly because no ***mo"
"dChannel*** was specified. You can set it with `{1}setModChannel <id>`".format(message.guild.name,
self.bot.command_prefix))
@commands.command() @commands.command()
@commands.guild_only() @commands.guild_only()
async def greetMe(self, ctx): async def greetMe(self, ctx):
"""Prints the greeting text a user receives by joining the server""" """Prints the greeting text a user receives by joining the server"""
self.serverCfgCheck(ctx.guild.id, "joinMessage", "") self.serverCfgCheck(ctx.guild.id, "joinMessage", "")
e = discord.Embed(description=ctx.author.mention)
e.set_author(name=f"{ctx.author.display_name} ({ctx.author})", icon_url=ctx.author.avatar_url)
temp = self.bot.serverCfg[str(ctx.guild.id)]["server"].get("joinMessage") temp = self.bot.serverCfg[str(ctx.guild.id)]["server"].get("joinMessage")
await ctx.send("No welcome message specified for this server." if temp == "" else temp) if temp == "":
e.color = discord.Color.red()
e.add_field(name=f"Join message of `{ctx.guild.name}`",
value="No welcome message specified for this server.")
else:
e.color = discord.Color.blue()
e.add_field(name=f"Join message of `{ctx.guild.name}`", value=temp)
await ctx.send(embed=e)
@commands.command() @commands.command()
@commands.guild_only() @commands.guild_only()
@commands.has_permissions(manage_channels=True) @commands.has_permissions(manage_channels=True)
async def setJoinMessage(self, ctx, *, msg : str): async def setJoinMessage(self, ctx, *, msg : str = ""):
self.serverCfgCheck(ctx.guild.id, "joinMessage", "") self.serverCfgCheck(ctx.guild.id, "joinMessage", "")
self.bot.serverCfg[str(ctx.guild.id)]["server"]["joinMessage"] = msg self.bot.serverCfg[str(ctx.guild.id)]["server"]["joinMessage"] = msg
self.bot.writeJSON("server.json", self.bot.serverCfg) self.bot.writeJSON("server.json", self.bot.serverCfg)
await ctx.send("joinMessage successfully changed to:\n{}".format(msg)) e = discord.Embed(description=ctx.author.mention, color=discord.Color.green())
e.set_author(name=f"{ctx.author.display_name} ({ctx.author})", icon_url=ctx.author.avatar_url)
if msg == "":
e.add_field(name="`joinMessage` has been successfully reset", value="No message was provided.")
else:
e.add_field(name="`joinMessage` successfully changed to:", value=msg)
await ctx.send(embed=e)
@commands.command() @commands.command()
@commands.guild_only() @commands.guild_only()
@commands.has_permissions(manage_channels=True) @commands.has_permissions(manage_channels=True)
async def toggleMessageEvent(self, ctx): async def toggleMessageEvent(self, ctx):
self.serverCfgCheck(ctx.guild.id, "logMessageEvent", False) await self.toggleEvent("logMessageEvent")
temp = not self.bot.serverCfg[str(ctx.guild.id)]["server"]["logMessageEvent"]
self.bot.serverCfg[str(ctx.guild.id)]["server"]["logMessageEvent"] = temp
self.bot.writeJSON("server.json", self.bot.serverCfg)
await ctx.send("logMessageEvent set to {}".format(temp))
@commands.command()
@commands.guild_only()
@commands.has_permissions(manage_channels=True)
async def setMessageEventChannel(self, ctx, id : int = None):
if id is None:
return await ctx.send("Please specify a channel")
if id not in [c.id for c in ctx.guild.channels]:
return await ctx.send("Channel {} does not exist on this server.".format(id))
self.serverCfgCheck(ctx.guild.id, "messageEventChannel", 0)
self.bot.serverCfg[str(ctx.guild.id)]["server"]["messageEventChannel"] = id
self.bot.writeJSON("server.json", self.bot.serverCfg)
await ctx.send("messageEventChannel successfully set.")
@commands.command() @commands.command()
@commands.guild_only() @commands.guild_only()
@commands.has_permissions(manage_channels=True) @commands.has_permissions(manage_channels=True)
async def toggleMemberEvent(self, ctx): async def toggleMemberEvent(self, ctx):
self.serverCfgCheck(ctx.guild.id, "logMemberEvent", False) await self.toggleEvent("logMemberEvent")
temp = not self.bot.serverCfg[str(ctx.guild.id)]["server"]["logMemberEvent"]
self.bot.serverCfg[str(ctx.guild.id)]["server"]["logMemberEvent"] = temp
self.bot.writeJSON("server.json", self.bot.serverCfg)
await ctx.send("logMemberEvent set to {}".format(temp))
@commands.command() @commands.command()
@commands.guild_only() @commands.guild_only()
@commands.has_permissions(manage_channels=True) @commands.has_permissions(manage_channels=True)
async def setMemberEventChannel(self, ctx, id : int = None): async def setMessageEventChannel(self, ctx, channel : discord.TextChannel = None, idStr : str = None):
if id is None: await self.setChannel(ctx, "messageEventChannel", channel, idStr)
return await ctx.send("Please specify a channel")
if id not in [c.id for c in ctx.guild.channels]:
return await ctx.send("Channel {} does not exist on this server.".format(id))
self.serverCfgCheck(ctx.guild.id, "memberEventChannel", 0)
self.bot.serverCfg[str(ctx.guild.id)]["server"]["memberEventChannel"] = id
self.bot.writeJSON("server.json", self.bot.serverCfg)
await ctx.send("memberEventChannel successfully set.")
@commands.command() @commands.command()
@commands.guild_only() @commands.guild_only()
@commands.has_permissions(manage_channels=True) @commands.has_permissions(manage_channels=True)
async def setModChannel(self, ctx, id : int = None): async def setMemberEventChannel(self, ctx, channel : discord.TextChannel = None, idStr : str = None):
if id is None: await self.setChannel(ctx, "memberEventChannel", channel, idStr)
return await ctx.send("Please specify a channel")
if id not in [c.id for c in ctx.guild.channels]:
return await ctx.send("Channel {} does not exist on this server.".format(id))
self.serverCfgCheck(ctx.guild.id, "modChannel", 0)
self.bot.serverCfg[str(ctx.guild.id)]["server"]["modChannel"] = id
self.bot.writeJSON("server.json", self.bot.serverCfg)
await ctx.send("modChannel successfully set.")
@commands.command() @commands.command()
@commands.guild_only() @commands.guild_only()
@commands.has_permissions(manage_channels=True) @commands.has_permissions(manage_channels=True)
async def setAnnouncementChannel(self, ctx, id : int = None): async def setModChannel(self, ctx, channel : discord.TextChannel = None, idStr : str = None):
if id is None: await self.setChannel(ctx, "modChannel", channel, idStr)
return await ctx.send("Please specify a channel")
if id not in [c.id for c in ctx.guild.channels]: @commands.command()
return await ctx.send("Channel {} does not exist on this server.".format(id)) @commands.guild_only()
self.serverCfgCheck(ctx.guild.id, "announcementChannel", 0) @commands.has_permissions(manage_channels=True)
self.bot.serverCfg[str(ctx.guild.id)]["server"]["announcementChannel"] = id async def setAnnouncementChannel(self, ctx, channel : discord.TextChannel = None, idStr : str = None):
self.bot.writeJSON("server.json", self.bot.serverCfg) await self.setChannel(ctx, "announcementChannel", channel, idStr)
await ctx.send("announcementChannel successfully set.")
@commands.command()
@commands.guild_only()
@commands.has_permissions(manage_channels=True)
async def resetMessageEventChannel(self, ctx):
await self.resetChannel(ctx, "messageEventChannel")
@commands.command()
@commands.guild_only()
@commands.has_permissions(manage_channels=True)
async def resetMemberEventChannel(self, ctx):
await self.resetChannel(ctx, "memberEventChannel")
@commands.command()
@commands.guild_only()
@commands.has_permissions(manage_channels=True)
async def resetModChannel(self, ctx):
await self.resetChannel(ctx, "modChannel")
@commands.command()
@commands.guild_only()
@commands.has_permissions(manage_channels=True)
async def resetAnnouncementChannel(self, ctx):
await self.resetChannel(ctx, "announcementChannel")
@commands.command() @commands.command()
@commands.guild_only() @commands.guild_only()
@ -275,16 +299,32 @@ class Server(commands.Cog):
async def announce(self, ctx, *, msg : str = None): async def announce(self, ctx, *, msg : str = None):
self.serverCfgCheck(ctx.guild.id, "announcementChannel", 0) self.serverCfgCheck(ctx.guild.id, "announcementChannel", 0)
self.serverCfgCheck(ctx.guild.id, "announcements", 0) self.serverCfgCheck(ctx.guild.id, "announcements", 0)
e = discord.Embed()
e.set_author(name=f"{ctx.author.display_name} ({ctx.author})", icon_url=ctx.author.avatar_url)
if self.bot.serverCfg[str(ctx.guild.id)]["server"]["announcementChannel"] == 0: if self.bot.serverCfg[str(ctx.guild.id)]["server"]["announcementChannel"] == 0:
return await ctx.send("***announcementChannel*** is not set up yet. You can set it with `{0}setAnnouncement" e.title = "<< Announcement >>"
"Channel <id>`".format(self.bot.command_prefix)) e.color = discord.Color.red()
e.add_field(inline=False, name=f"`announcementChannel`",
value=f"is not set.")
e.add_field(name="You can set it up with",
value=f"`{self.bot.command_prefix}setAnnouncementChannel`")
return await ctx.send(embed=e)
if msg is None: if msg is None:
return await ctx.send("Please specify a message to announce") e.title = "<< Announcement >>"
e = discord.Embed(color=0x6428c8) e.color = discord.Color.red()
e.add_field(inline=False, name=f"No message given",
value=f"Please specify a message to announce.")
return await ctx.send(embed=e)
num = self.bot.serverCfg[str(ctx.guild.id)]["server"]["announcements"] + 1 num = self.bot.serverCfg[str(ctx.guild.id)]["server"]["announcements"] + 1
self.bot.serverCfg[str(ctx.guild.id)]["server"]["announcements"] = num self.bot.serverCfg[str(ctx.guild.id)]["server"]["announcements"] = num
self.bot.writeJSON("server.json", self.bot.serverCfg) self.bot.writeJSON("server.json", self.bot.serverCfg)
e.add_field(name="#{} - {} (UTC)".format(num, datetime.utcnow().strftime("%d.%m.%Y")), value=msg, inline=False) e.title = f"<< Announcement #{num} >>"
time = datetime.utcnow().strftime('%d.%m.%Y')
if len(msg) < 1025:
e.add_field(name=f"{time} (UTC)", value=msg, inline=False)
else:
e.add_field(name=f"{time} (UTC)", value=msg[:1024], inline=False)
e.add_field(name="[...]", value=msg[1024:], inline=False)
chan = self.bot.get_channel(self.bot.serverCfg[str(ctx.guild.id)]["server"]["announcementChannel"]) chan = self.bot.get_channel(self.bot.serverCfg[str(ctx.guild.id)]["server"]["announcementChannel"])
await chan.send(embed=e) await chan.send(embed=e)