diff options
| author | 2019-12-22 15:30:08 -0300 | |
|---|---|---|
| committer | 2019-12-22 15:30:08 -0300 | |
| commit | 6d42e1e3f33f595b264b17b4ab1d260f956051aa (patch) | |
| tree | c9a241d18cb5f4e0c5e94bedc4235d9d155712fd | |
| parent | Fix bug to log if `user` is either `Member` or `User` (diff) | |
Make `watchchannels` use `FetchedUser` instead of `proxy_user`
This changes also removes the original `proxy_user` used by
`watchchannels` the attributes in its `discord.Object` object to the one
returned by FetchedUser.
Diffstat (limited to '')
| -rw-r--r-- | bot/cogs/alias.py | 17 | ||||
| -rw-r--r-- | bot/cogs/watchchannels/bigbrother.py | 7 | ||||
| -rw-r--r-- | bot/cogs/watchchannels/talentpool.py | 9 | ||||
| -rw-r--r-- | bot/cogs/watchchannels/watchchannel.py | 20 | ||||
| -rw-r--r-- | bot/converters.py | 2 | 
5 files changed, 24 insertions, 31 deletions
| diff --git a/bot/cogs/alias.py b/bot/cogs/alias.py index c1db38462..03c49c2f4 100644 --- a/bot/cogs/alias.py +++ b/bot/cogs/alias.py @@ -7,8 +7,7 @@ from discord.ext.commands import Cog, Command, Context, clean_content, command,  from bot.bot import Bot  from bot.cogs.extensions import Extension -from bot.cogs.watchchannels.watchchannel import proxy_user -from bot.converters import TagNameConverter +from bot.converters import FetchedUser, TagNameConverter  from bot.pagination import LinePaginator  log = logging.getLogger(__name__) @@ -61,12 +60,18 @@ class Alias (Cog):          await self.invoke(ctx, "site tools")      @command(name="watch", hidden=True) -    async def bigbrother_watch_alias(self, ctx: Context, user: Union[Member, User, proxy_user], *, reason: str) -> None: +    async def bigbrother_watch_alias( +            self, +            ctx: Context, +            user: Union[Member, User, FetchedUser], +            *, +            reason: str +    ) -> None:          """Alias for invoking <prefix>bigbrother watch [user] [reason]."""          await self.invoke(ctx, "bigbrother watch", user, reason=reason)      @command(name="unwatch", hidden=True) -    async def bigbrother_unwatch_alias(self, ctx: Context, user: Union[User, proxy_user], *, reason: str) -> None: +    async def bigbrother_unwatch_alias(self, ctx: Context, user: Union[User, FetchedUser], *, reason: str) -> None:          """Alias for invoking <prefix>bigbrother unwatch [user] [reason]."""          await self.invoke(ctx, "bigbrother unwatch", user, reason=reason) @@ -132,12 +137,12 @@ class Alias (Cog):          await self.invoke(ctx, "docs get", symbol)      @command(name="nominate", hidden=True) -    async def nomination_add_alias(self, ctx: Context, user: Union[Member, User, proxy_user], *, reason: str) -> None: +    async def nomination_add_alias(self, ctx: Context, user: Union[Member, User, FetchedUser], *, reason: str) -> None:          """Alias for invoking <prefix>talentpool add [user] [reason]."""          await self.invoke(ctx, "talentpool add", user, reason=reason)      @command(name="unnominate", hidden=True) -    async def nomination_end_alias(self, ctx: Context, user: Union[User, proxy_user], *, reason: str) -> None: +    async def nomination_end_alias(self, ctx: Context, user: Union[User, FetchedUser], *, reason: str) -> None:          """Alias for invoking <prefix>nomination end [user] [reason]."""          await self.invoke(ctx, "nomination end", user, reason=reason) diff --git a/bot/cogs/watchchannels/bigbrother.py b/bot/cogs/watchchannels/bigbrother.py index 306ed4c64..7a30d5033 100644 --- a/bot/cogs/watchchannels/bigbrother.py +++ b/bot/cogs/watchchannels/bigbrother.py @@ -8,8 +8,9 @@ from discord.ext.commands import Cog, Context, group  from bot.bot import Bot  from bot.cogs.moderation.utils import post_infraction  from bot.constants import Channels, MODERATION_ROLES, Webhooks +from bot.converters import FetchedUser  from bot.decorators import with_role -from .watchchannel import WatchChannel, proxy_user +from .watchchannel import WatchChannel  log = logging.getLogger(__name__) @@ -46,7 +47,7 @@ class BigBrother(WatchChannel, Cog, name="Big Brother"):      @bigbrother_group.command(name='watch', aliases=('w',))      @with_role(*MODERATION_ROLES) -    async def watch_command(self, ctx: Context, user: Union[User, proxy_user], *, reason: str) -> None: +    async def watch_command(self, ctx: Context, user: Union[User, FetchedUser], *, reason: str) -> None:          """          Relay messages sent by the given `user` to the `#big-brother` channel. @@ -93,7 +94,7 @@ class BigBrother(WatchChannel, Cog, name="Big Brother"):      @bigbrother_group.command(name='unwatch', aliases=('uw',))      @with_role(*MODERATION_ROLES) -    async def unwatch_command(self, ctx: Context, user: Union[User, proxy_user], *, reason: str) -> None: +    async def unwatch_command(self, ctx: Context, user: Union[User, FetchedUser], *, reason: str) -> None:          """Stop relaying messages by the given `user`."""          active_watches = await self.bot.api_client.get(              self.api_endpoint, diff --git a/bot/cogs/watchchannels/talentpool.py b/bot/cogs/watchchannels/talentpool.py index cc8feeeee..62be3bc3b 100644 --- a/bot/cogs/watchchannels/talentpool.py +++ b/bot/cogs/watchchannels/talentpool.py @@ -9,10 +9,11 @@ from discord.ext.commands import Cog, Context, group  from bot.api import ResponseCodeError  from bot.bot import Bot  from bot.constants import Channels, Guild, MODERATION_ROLES, STAFF_ROLES, Webhooks +from bot.converters import FetchedUser  from bot.decorators import with_role  from bot.pagination import LinePaginator  from bot.utils import time -from .watchchannel import WatchChannel, proxy_user +from .watchchannel import WatchChannel  log = logging.getLogger(__name__) @@ -49,7 +50,7 @@ class TalentPool(WatchChannel, Cog, name="Talentpool"):      @nomination_group.command(name='watch', aliases=('w', 'add', 'a'))      @with_role(*STAFF_ROLES) -    async def watch_command(self, ctx: Context, user: Union[Member, User, proxy_user], *, reason: str) -> None: +    async def watch_command(self, ctx: Context, user: Union[Member, User, FetchedUser], *, reason: str) -> None:          """          Relay messages sent by the given `user` to the `#talent-pool` channel. @@ -114,7 +115,7 @@ class TalentPool(WatchChannel, Cog, name="Talentpool"):      @nomination_group.command(name='history', aliases=('info', 'search'))      @with_role(*MODERATION_ROLES) -    async def history_command(self, ctx: Context, user: Union[User, proxy_user]) -> None: +    async def history_command(self, ctx: Context, user: Union[User, FetchedUser]) -> None:          """Shows the specified user's nomination history."""          result = await self.bot.api_client.get(              self.api_endpoint, @@ -143,7 +144,7 @@ class TalentPool(WatchChannel, Cog, name="Talentpool"):      @nomination_group.command(name='unwatch', aliases=('end', ))      @with_role(*MODERATION_ROLES) -    async def unwatch_command(self, ctx: Context, user: Union[User, proxy_user], *, reason: str) -> None: +    async def unwatch_command(self, ctx: Context, user: Union[User, FetchedUser], *, reason: str) -> None:          """          Ends the active nomination of the specified user with the given reason. diff --git a/bot/cogs/watchchannels/watchchannel.py b/bot/cogs/watchchannels/watchchannel.py index bd0622554..eb787b083 100644 --- a/bot/cogs/watchchannels/watchchannel.py +++ b/bot/cogs/watchchannels/watchchannel.py @@ -9,8 +9,8 @@ from typing import Optional  import dateutil.parser  import discord -from discord import Color, Embed, HTTPException, Message, Object, errors -from discord.ext.commands import BadArgument, Cog, Context +from discord import Color, Embed, HTTPException, Message, errors +from discord.ext.commands import Cog, Context  from bot.api import ResponseCodeError  from bot.bot import Bot @@ -25,22 +25,6 @@ log = logging.getLogger(__name__)  URL_RE = re.compile(r"(https?://[^\s]+)") -def proxy_user(user_id: str) -> Object: -    """A proxy user object that mocks a real User instance for when the later is not available.""" -    try: -        user_id = int(user_id) -    except ValueError: -        raise BadArgument - -    user = Object(user_id) -    user.mention = user.id -    user.display_name = f"<@{user.id}>" -    user.avatar_url_as = lambda static_format: None -    user.bot = False - -    return user - -  @dataclass  class MessageHistory:      """Represents a watch channel's message history.""" diff --git a/bot/converters.py b/bot/converters.py index aa2fa3cc2..a2e445d74 100644 --- a/bot/converters.py +++ b/bot/converters.py @@ -296,7 +296,9 @@ def proxy_user(user_id: str) -> discord.Object:      user = discord.Object(user_id)      user.mention = user.id +    user.display_name = f"<@{user.id}>"      user.avatar_url_as = lambda static_format: None +    user.bot = False      return user | 
