aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Numerlor <[email protected]>2021-04-19 22:08:29 +0200
committerGravatar Numerlor <[email protected]>2021-12-08 15:19:38 +0100
commitc72d4944690e374e9ef396cae91094e2464e3f04 (patch)
treea334e983216a3ee6bc8cde16e754a9780c1e0dba
parentMerge pull request #1663 from Numerlor/tag-groups (diff)
Move the rules command to the Information cog
-rw-r--r--bot/exts/info/information.py38
-rw-r--r--bot/exts/info/site.py37
2 files changed, 38 insertions, 37 deletions
diff --git a/bot/exts/info/information.py b/bot/exts/info/information.py
index 5b48495dc..a5e700678 100644
--- a/bot/exts/info/information.py
+++ b/bot/exts/info/information.py
@@ -2,16 +2,18 @@ import colorsys
import pprint
import textwrap
from collections import defaultdict
+from textwrap import shorten
from typing import Any, DefaultDict, Mapping, Optional, Tuple, Union
import rapidfuzz
from discord import AllowedMentions, Colour, Embed, Guild, Message, Role
-from discord.ext.commands import BucketType, Cog, Context, Paginator, command, group, has_any_role
+from discord.ext.commands import BucketType, Cog, Context, Greedy, Paginator, command, group, has_any_role
from discord.utils import escape_markdown
from bot import constants
from bot.api import ResponseCodeError
from bot.bot import Bot
+from bot.constants import URLs
from bot.converters import MemberOrUser
from bot.decorators import in_whitelist
from bot.errors import NonExistentRoleError
@@ -523,6 +525,40 @@ class Information(Cog):
"""Shows information about the raw API response in a copy-pasteable Python format."""
await self.send_raw_content(ctx, message, json=True)
+ @command(aliases=("rule",))
+ async def rules(self, ctx: Context, rules: Greedy[int]) -> None:
+ """Provides a link to all rules or, if specified, displays specific rule(s)."""
+ rules_embed = Embed(title="Rules", color=Colour.og_blurple(), url=f"{URLs.site_schema}{URLs.site}/pages/rules")
+
+ if not rules:
+ # Rules were not submitted. Return the default description.
+ rules_embed.description = (
+ f"The rules and guidelines that apply to this community can be found on"
+ f" our [rules page]({URLs.site_schema}{URLs.site}/pages/rules). We expect"
+ f" all members of the community to have read and understood these."
+ )
+
+ await ctx.send(embed=rules_embed)
+ return
+
+ full_rules = await self.bot.api_client.get("rules", params={"link_format": "md"})
+
+ # Remove duplicates and sort the rule indices
+ rules = sorted(set(rules))
+
+ invalid = ", ".join(str(index) for index in rules if index < 1 or index > len(full_rules))
+
+ if invalid:
+ await ctx.send(shorten(":x: Invalid rule indices: " + invalid, 75, placeholder=" ..."))
+ return
+
+ for rule in rules:
+ self.bot.stats.incr(f"rule_uses.{rule}")
+
+ final_rules = tuple(f"**{pick}.** {full_rules[pick - 1]}" for pick in rules)
+
+ await LinePaginator.paginate(final_rules, ctx, rules_embed, max_lines=3)
+
def setup(bot: Bot) -> None:
"""Load the Information cog."""
diff --git a/bot/exts/info/site.py b/bot/exts/info/site.py
index f6499ecce..665bff3a8 100644
--- a/bot/exts/info/site.py
+++ b/bot/exts/info/site.py
@@ -1,12 +1,11 @@
from textwrap import shorten
from discord import Colour, Embed
-from discord.ext.commands import Cog, Context, Greedy, group
+from discord.ext.commands import Cog, Context, group
from bot.bot import Bot
from bot.constants import URLs
from bot.log import get_logger
-from bot.pagination import LinePaginator
log = get_logger(__name__)
@@ -105,40 +104,6 @@ class Site(Cog):
await ctx.send(embed=embed)
- @site_group.command(name="rules", aliases=("r", "rule"), root_aliases=("rules", "rule"))
- async def site_rules(self, ctx: Context, rules: Greedy[int]) -> None:
- """Provides a link to all rules or, if specified, displays specific rule(s)."""
- rules_embed = Embed(title='Rules', color=Colour.og_blurple(), url=f'{BASE_URL}/pages/rules')
-
- if not rules:
- # Rules were not submitted. Return the default description.
- rules_embed.description = (
- "The rules and guidelines that apply to this community can be found on"
- f" our [rules page]({BASE_URL}/pages/rules). We expect"
- " all members of the community to have read and understood these."
- )
-
- await ctx.send(embed=rules_embed)
- return
-
- full_rules = await self.bot.api_client.get('rules', params={'link_format': 'md'})
-
- # Remove duplicates and sort the rule indices
- rules = sorted(set(rules))
-
- invalid = ', '.join(str(index) for index in rules if index < 1 or index > len(full_rules))
-
- if invalid:
- await ctx.send(shorten(":x: Invalid rule indices: " + invalid, 75, placeholder=' ...'))
- return
-
- for rule in rules:
- self.bot.stats.incr(f"rule_uses.{rule}")
-
- final_rules = tuple(f"**{pick}.** {full_rules[pick - 1]}" for pick in rules)
-
- await LinePaginator.paginate(final_rules, ctx, rules_embed, max_lines=3)
-
def setup(bot: Bot) -> None:
"""Load the Site cog."""