@@ -14,7 +14,7 @@ def __init__(self, bot):
1414 @commands .command (name = "ban" )
1515 @commands .guild_only ()
1616 @commands .has_permissions (ban_members = True )
17- async def ban (self , ctx , member : discord .Member = None , reason : str = "No reason specified! " , dmd = 0 ):
17+ async def ban (self , ctx , member : discord .Member = None , reason : str = "No reason specified" , dmd = 0 ):
1818 if member is None or member == ctx .message .author :
1919 await ctx .send (f"You cannot ban yourself!" )
2020 return
@@ -24,7 +24,8 @@ async def ban(self, ctx, member: discord.Member = None, reason: str = "No reason
2424 return
2525
2626 # TODO: log channel embed with reason (see: https://github.com/Puyodead1/Extron/blob/master/Discord/Commands/ban.js)
27- embed = discord .Embed (title = f"Bye Bye **{ member .name } ** 🔨" ,
27+ embed = discord .Embed (title = None ,
28+ description = f"Bye Bye **{ member .name } ** 🔨" ,
2829 color = discord .Color .green (),
2930 timestamp = datetime .utcnow ())
3031 embed .set_image (url = "https://thumbs.gfycat.com/ElderlyViciousFeline-size_restricted.gif" )
@@ -34,7 +35,7 @@ async def ban(self, ctx, member: discord.Member = None, reason: str = "No reason
3435 await member .ban (reason = reason , delete_message_days = dmd )
3536 await ctx .send (content = None , embed = embed )
3637 except Forbidden as e :
37- embed = discord .Embed (title = f"Missing `ban_members` permission!" , description = f"Error: { e .text } " ,
38+ embed = discord .Embed (title = f"Missing permission!" , description = f"Error: { e .text } " ,
3839 color = discord .Color .red (),
3940 timestamp = datetime .utcnow ())
4041 embed .set_footer (text = ctx .author .name , icon_url = ctx .author .avatar_url )
@@ -53,15 +54,16 @@ async def ban(self, ctx, member: discord.Member = None, reason: str = "No reason
5354 @commands .command (name = "unban" )
5455 @commands .guild_only ()
5556 @commands .has_permissions (ban_members = True )
56- async def ban (self , ctx , user_id : str , reason = "No reason specified! " ):
57+ async def ban (self , ctx , user_id : str , reason = "No reason specified" ):
5758 try :
5859 member = await self .bot .fetch_user (user_id = user_id )
5960 try :
6061 await ctx .guild .unban (user = member , reason = reason )
61- embed = discord .Embed (title = f" { member . name } has been unbanned!" ,
62- description = f"Unban Reason: { reason } " ,
62+ embed = discord .Embed (title = None ,
63+ description = f"{ member . name } has been unbanned! " ,
6364 color = discord .Color .green (),
6465 timestamp = datetime .utcnow ())
66+ embed .add_field (name = f"Unban Reason" , value = reason )
6567 embed .set_thumbnail (
6668 url = "https://icon-library.net/images/green-checkmark-icon/green-checkmark-icon-11.jpg" )
6769 embed .set_footer (text = f"Unbanned by { ctx .author .name } " , icon_url = ctx .author .avatar_url )
@@ -95,7 +97,7 @@ async def ban(self, ctx, user_id: str, reason="No reason specified!"):
9597 @commands .command (name = "mute" )
9698 @commands .guild_only ()
9799 @commands .has_permissions (kick_members = True )
98- async def mute (self , ctx , member : discord .Member , reason : str = "No reason specified! " ):
100+ async def mute (self , ctx , member : discord .Member , reason : str = "No reason specified" ):
99101 if member .bot :
100102 await ctx .send (f"{ member .name } is a bot." )
101103 return
@@ -107,7 +109,11 @@ async def mute(self, ctx, member: discord.Member, reason: str = "No reason speci
107109 if muted_role :
108110 try :
109111 await member .add_roles (muted_role , reason = reason , atomic = False )
110- await ctx .send (f"{ member .name } was muted!" )
112+ embed = discord .Embed (title = None , description = f"**{ member .name } ** was muted 🔇" ,
113+ color = discord .Color .green (), timestamp = datetime .utcnow ())
114+ embed .set_author (name = self .bot .user .name , icon_url = self .bot .user .avatar_url )
115+ embed .set_footer (text = f"Muted by { ctx .author .name } " , icon_url = ctx .author .avatar_url )
116+ await ctx .send (content = None , embed = embed )
111117 await member .send (
112118 f"You were muted by { ctx .message .author .name } in { ctx .guild .name } for { reason } " )
113119 log_channel = [x for x in member .guild .channels if x .name == "logs" ]
@@ -118,12 +124,13 @@ async def mute(self, ctx, member: discord.Member, reason: str = "No reason speci
118124 embed = discord .Embed (title = f"{ member .name } #{ member .discriminator } was muted!" ,
119125 description = None , color = discord .Color .red (),
120126 timestamp = datetime .utcnow ())
127+ embed .set_author (name = self .bot .user .name , icon_url = self .bot .user .avatar_url )
121128 embed .add_field (name = f"Mute Reason" , value = reason )
122129 embed .set_thumbnail (url = member .avatar_url )
123130 embed .set_footer (text = f"Muted by { ctx .author .name } " , icon_url = ctx .author .avatar_url )
124131 await log_channel .send (content = None , embed = embed )
125132 except Forbidden as e :
126- await ctx .send (f"[GuildAdminCommands] Missing `manage_roles` permission! Error: { e .text } " )
133+ await ctx .send (f"[GuildAdminCommands] Missing permission! Error: { e .text } " )
127134 except HTTPException as e :
128135 await ctx .send (f"[GuildAdminCommands] Failed to add role! Error: { e .text } " )
129136 else :
@@ -141,7 +148,7 @@ async def mute(self, ctx, member: discord.Member, reason: str = "No reason speci
141148 print (f"Set permissions on channel { channel .name } " )
142149 except Forbidden as e :
143150 # no permission to edit channel specific permissions
144- await ctx .send (f"[GuildAdminCommands] Missing `administrator` permission! Error: { e .text } " )
151+ await ctx .send (f"[GuildAdminCommands] Missing permission! Error: { e .text } " )
145152 except NotFound as e :
146153 await ctx .send (
147154 f"[GuildAdminCommands] The role or member being edited is not part of the guild! Error: { e .text } " )
@@ -154,7 +161,11 @@ async def mute(self, ctx, member: discord.Member, reason: str = "No reason speci
154161
155162 try :
156163 await member .add_roles (muted_role , reason = reason , atomic = False )
157- await ctx .send (f"{ member .name } was muted!" )
164+ embed = discord .Embed (title = None , description = f"**{ member .name } ** was muted 🔇" ,
165+ color = discord .Color .green (), timestamp = datetime .utcnow ())
166+ embed .set_author (name = self .bot .user .name , icon_url = self .bot .user .avatar_url )
167+ embed .set_footer (text = f"Muted by { ctx .author .name } " , icon_url = ctx .author .avatar_url )
168+ await ctx .send (content = None , embed = embed )
158169 await member .send (
159170 f"You were muted by { ctx .message .author .name } in { ctx .guild .name } for { reason } " )
160171 log_channel = [x for x in member .guild .channels if x .name == "logs" ]
@@ -166,16 +177,17 @@ async def mute(self, ctx, member: discord.Member, reason: str = "No reason speci
166177 description = None , color = discord .Color .red (),
167178 timestamp = datetime .utcnow ())
168179 embed .add_field (name = f"Mute Reason" , value = reason )
180+ embed .set_author (name = self .bot .user .name , icon_url = self .bot .user .avatar_url )
169181 embed .set_thumbnail (url = member .avatar_url )
170182 embed .set_footer (text = f"Muted by { ctx .author .name } " , icon_url = ctx .author .avatar_url )
171183 await log_channel .send (content = None , embed = embed )
172184 except Forbidden as e :
173- await ctx .send (f"[GuildAdminCommands] Missing `manage_roles` permission! Error: { e .text } " )
185+ await ctx .send (f"[GuildAdminCommands] Missing permission! Error: { e .text } " )
174186 except HTTPException as e :
175187 await ctx .send (f"[GuildAdminCommands] Failed to add role! Error: { e .text } " )
176188 except Forbidden as e :
177189 # no permission to create the role
178- await ctx .send (f"[GuildAdminCommands] Cannot create muted role, Missing `manage_roles` "
190+ await ctx .send (f"[GuildAdminCommands] Cannot create muted role, Missing "
179191 f"permission! Error: { e .text } " )
180192 except HTTPException as e :
181193 # Creating role failed
@@ -190,7 +202,7 @@ async def mute(self, ctx, member: discord.Member, reason: str = "No reason speci
190202 @commands .command (name = "unmute" )
191203 @commands .guild_only ()
192204 @commands .has_permissions (administrator = True )
193- async def unmute (self , ctx , member : discord .Member , reason : str = "No reason specified! " ):
205+ async def unmute (self , ctx , member : discord .Member , reason : str = "No reason specified" ):
194206 if member .bot :
195207 await ctx .send (f"{ member .name } is a bot." )
196208 return
@@ -201,7 +213,11 @@ async def unmute(self, ctx, member: discord.Member, reason: str = "No reason spe
201213 # check length of the list, if 0 no muted role, if == 0 there is one
202214 try :
203215 await member .remove_roles (muted_role , reason = reason )
204- await ctx .send (f"{ member .name } was unmuted!" )
216+ embed = discord .Embed (title = None , description = f"**{ member .name } ** was unmuted 🔊" ,
217+ color = discord .Color .green (), timestamp = datetime .utcnow ())
218+ embed .set_author (name = self .bot .user .name , icon_url = self .bot .user .avatar_url )
219+ embed .set_footer (text = f"Unmuted by { ctx .author .name } " , icon_url = ctx .author .avatar_url )
220+ await ctx .send (content = None , embed = embed )
205221 await member .send (f"You were unmuted by { ctx .message .author .name } in { ctx .guild .name } " )
206222 log_channel = [x for x in member .guild .channels if x .name == "logs" ]
207223 log_channel = log_channel [0 ] if len (
@@ -212,18 +228,35 @@ async def unmute(self, ctx, member: discord.Member, reason: str = "No reason spe
212228 description = None , color = discord .Color .green (),
213229 timestamp = datetime .utcnow ())
214230 embed .add_field (name = f"Unmute Reason" , value = reason )
231+ embed .set_author (name = self .bot .user .name , icon_url = self .bot .user .avatar_url )
215232 embed .set_thumbnail (url = member .avatar_url )
216233 embed .set_footer (text = f"Unmuted by { ctx .author .name } " , icon_url = ctx .author .avatar_url )
217234 await log_channel .send (content = None , embed = embed )
218235 except Forbidden as e :
219236 # missing permission to remove roles
220- await ctx .send (f"[GuildAdminCommands] Missing `manage_roles` permission! Error: { e .text } " )
237+ await ctx .send (f"[GuildAdminCommands] Missing permission! Error: { e .text } " )
221238 except HTTPException as e :
222239 await ctx .send (f"[GuildAdminCommands] Failed to remove roles! Error: { e .text } " )
223240 except HTTPException as e :
224241 # Retrieving roles failed
225242 await ctx .send (f"[GuildAdminCommands] Retrieving roles failed! Error: { e .text } " )
226243
227244
245+ @commands .command (name = "kick" )
246+ @commands .guild_only ()
247+ # TODO: reason?
248+ async def kick (self , ctx , member : discord .Member ):
249+ try :
250+ await member .kick ()
251+ embed = discord .Embed (title = None , description = f"**{ member .name } ** was kicked 👋" , color = discord .Color .green (), timestamp = datetime .utcnow ())
252+ embed .set_author (name = self .bot .user .name , icon_url = self .bot .user .avatar_url )
253+ embed .set_footer (text = f"Kicked by { ctx .author .name } " , icon_url = ctx .author .avatar_url )
254+ await ctx .send (content = None , embed = embed )
255+ except Forbidden as e :
256+ await ctx .send (f"[GuildAdminCommands] Missing permission! Error: { e .text } " )
257+ except HTTPException as e :
258+ await ctx .send (f"[GuildAdminCommands] Failed to kick user { member .name } ! Error: { e .text } " )
259+
260+
228261def setup (bot ):
229262 bot .add_cog (GuildAdminCommandsCog (bot ))
0 commit comments