-
-
Notifications
You must be signed in to change notification settings - Fork 4
Added AFK and Slowmode commands #5
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -125,6 +125,7 @@ async def pr(ctx, number: Option(int, "Pull request number")): | |
| await ctx.respond(f"Here's a link", view=view) | ||
|
|
||
|
|
||
|
|
||
| @bot.slash_command() | ||
| async def source(ctx, command: Option(str, "The command to view the source code for", required=False)): | ||
| """View the source for a particular command or the whole bot.""" | ||
|
|
@@ -282,6 +283,67 @@ async def on_message_edit(before, after): | |
| ctx = await bot.get_context(after) | ||
| await bot.invoke(ctx) | ||
|
|
||
| @bot.event | ||
| async def on_message(message): | ||
| if bot.afk_users.get(message.author.id): | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Indentation errors here
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ah, do you use spaces for indentation?
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Of course, as per https://www.python.org/dev/peps/pep-0008/#code-lay-out. |
||
| del bot.afk_users[message.author.id] | ||
| return await message.channel.send(f'Welcome back {message.author.name}, you are no longer AFK') | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This should include a delete_after |
||
|
|
||
| for mention in message.mentions: | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There's more we can do with this. It would be nice to have it say "person1 and person2 are afk" instead of just sending one person's message. |
||
| if bot.afk_users.get(mention.id): | ||
| return await message.channel.send(f'{mention.name} is AFK: {bot.afk_users[mention.id]}', allowed_mentions = discord.AllowedMentions.none()) | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. more indentation errors |
||
|
|
||
| await bot.process_commands(message) | ||
|
|
||
| bot.afk_users = {} | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This should be set in the bot cache that I implemented.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Or better yet, in a database that I plan on implementing soon. |
||
|
|
||
|
|
||
| slowmode = bot.command_group(name='slowmode', description="Slowmode related commands for moderators", guild_ids=guild_ids) | ||
|
|
||
| @slowmode.command(name='set', description='Set the slowmode of the current channel') | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This was rejected in a separate pull request. |
||
| @commands.has_role(881407111211384902) | ||
| async def set(ctx, time:Option(int, 'Enter the time in seconds')): | ||
| if ctx.author.guild_permissions.manage_messages: | ||
|
|
||
| if time > 21600: | ||
| await ctx.respond(content=f"Slowmode of a channel must be {humanize.precisedelta(21600)} (21600 seconds) or less.", ephemeral=True) | ||
| else: | ||
| await ctx.channel.edit(slowmode_delay=time) | ||
| await ctx.respond(f"The slowmode of this channel has been changed to {humanize.precisedelta(time)} ({time}s)") | ||
| else: | ||
| await ctx.respond("You do not have the `Manage Message` permission which is required to run this command.", ephemeral=True) | ||
|
|
||
| @slowmode.command(name='off', description='Remove the slowmode from the current channel') | ||
| @commands.has_role(881407111211384902) | ||
| async def off(ctx): | ||
| if ctx.author.guild_permissions.manage_messages: | ||
| if ctx.channel.slowmode_delay == 0: | ||
| await ctx.respond(content="This channel doesn't have a slowmode. Use `/slowmode set` to set a slowmode.", ephemeral=True) | ||
| await ctx.channel.edit(slowmode_delay=0) | ||
| await ctx.respond("Removed the slowmode from this channel!") | ||
| else: | ||
| await ctx.respond("You do not have the `Manage Message` permission which is required to run this command.", ephemeral=True) | ||
|
|
||
| for i in ["jishaku", "cogs.rtfm", "cogs.modmail", "cogs.tags"]: | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This shouldn't be here |
||
| bot.load_extension(i) | ||
|
|
||
| afk = bot.command_group(name='afk', description='AFK Commands', guild_ids=guild_ids) | ||
|
|
||
| @afk.command(name='set') | ||
| async def afk_set(ctx, *, reason = 'No reason provided'): | ||
| if bot.afk_users.get(ctx.author.id): | ||
| return await ctx.send(f'{ctx.author.name}, you\'re already AFK') | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Use double quotes here |
||
| if len(reason) > 100: # so that chat doesn't flood when the reason has to be shown | ||
| return await ctx.send(f'{ctx.author.name}, keep your AFK reason under 100 characters') | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
| bot.afk_users[ctx.author.id] = reason | ||
| await ctx.send(f'{ctx.author.name}, I set your AFK with the reason: {reason}', allowed_mentions=discord.AllowedMentions.none(), ephemeral=True) | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. allowed_mentions is redundant. |
||
|
|
||
| @afk.command(name='remove') | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No need for a remove command, someone can just send a message to remove it. The set command can be moved out of the command group. |
||
| async def afk_remove(ctx): | ||
| if bot.afk_users.get(ctx.author.id): | ||
| del bot.afk_users[ctx.author.id] | ||
| return await ctx.send(f'Welcome back {ctx.author.name}, you are no longer AFK') | ||
|
|
||
|
|
||
| if __name__ == "__main__": | ||
| bot.run() | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why