Skip to content

Commit 17d97bf

Browse files
committed
[rift] bugfixes
1 parent b09666a commit 17d97bf

File tree

1 file changed

+24
-19
lines changed

1 file changed

+24
-19
lines changed

rift/rift.py

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from functools import partial
55
from io import BytesIO
66
from itertools import starmap
7+
from operator import attrgetter
78
from traceback import walk_tb
89
from types import SimpleNamespace
910
from typing import (
@@ -41,8 +42,7 @@
4142

4243
_H = TypeVar("_H", bound=Hashable)
4344

44-
def deduplicate_iterables(*iterables: Iterable[_H]) -> List[_H]: # noqa: F811
45-
...
45+
def deduplicate_iterables(*iterables: Iterable[_H]) -> List[_H]: ...
4646

4747
else:
4848
from .converter import DiscordConverter as Messageable
@@ -57,13 +57,11 @@ def deduplicate_iterables(*iterables: Iterable[_H]) -> List[_H]: # noqa: F811
5757

5858

5959
@overload
60-
async def can_close(ctx: commands.Context) -> bool:
61-
...
60+
async def can_close(ctx: commands.Context) -> bool: ...
6261

6362

6463
@overload
65-
async def can_close(ctx: discord.Message, bot: Red) -> bool:
66-
...
64+
async def can_close(ctx: discord.Message, bot: Red) -> bool: ...
6765

6866

6967
async def can_close(ctx: Union[commands.Context, discord.Message], bot: Red = None):
@@ -476,6 +474,7 @@ def check(vector):
476474

477475
pages: List[discord.Embed] = []
478476
for i, (source, destination) in enumerate(unique_rifts, 1):
477+
# TODO (bugfix): swap source and destination if current channel is destination
479478
if source in self.rifts.get(destination, ()):
480479
delim = "⟷"
481480
else:
@@ -485,13 +484,12 @@ def check(vector):
485484
)
486485
if topic := getattr(destination, "topic", None):
487486
embed.description = topic
488-
try:
489-
members = destination.users
490-
except AttributeError:
491-
members = destination.members
487+
members: list[discord.abc.User] = getattr(destination, "members", [ctx.me, ctx.author])
492488
# TODO: format and sort members
493-
member_str = humanize_list(list(map(str, members)))
494-
short_member_str = next(pagify(member_str, delims=[","]))
489+
member_str = humanize_list(list(map(attrgetter("display_name"), members)))
490+
short_member_str = next(
491+
pagify(member_str, delims=[","], page_length=1024, shorten_by=2)
492+
)
495493
if len(member_str) != len(short_member_str):
496494
short_member_str += " …"
497495
embed.add_field(name=f"Connected from {destination}", value=member_str)
@@ -767,12 +765,17 @@ async def process_kwargs(
767765
both_perms = discord.Permissions(author_perms.value & bot_perms.value)
768766
if guild and content and not is_owner and not await self.bot.is_automod_immune(author):
769767
assert isinstance(channel, discord.TextChannel)
770-
filt: Optional["Filter"] = self.bot.get_cog("Filter") # type: ignore
771-
if filt and await filt.filter_hits(content, channel):
768+
try:
769+
filt: Optional["Filter"] = self.bot.get_cog("Filter") # type: ignore
770+
filtered = filt and await filt.filter_hits(channel, content)
771+
except Exception:
772+
filtered = False
773+
if filtered:
772774
raise RiftError(_("Your message was filtered."))
773775
embed: Optional[List[discord.Embed]]
774776
if await self.bot.embed_requested(
775-
getattr(channel, "recipient", channel), command=self.rift # type: ignore
777+
getattr(channel, "recipient", channel),
778+
command=self.rift, # type: ignore
776779
):
777780
embed = [
778781
discord.Embed(
@@ -783,15 +786,17 @@ async def process_kwargs(
783786
if ogg := getattr(oga, "guild", None):
784787
assert isinstance(oga, discord.Member)
785788
if oga.top_role != ogg.default_role:
786-
embed[0].title = filter_invites(f"{oga.top_role} in {ogg}")
789+
subheader = filter_invites(f"{oga.top_role} in {ogg}")
787790
else:
788-
embed[0].title = filter_invites(f"in {ogg}")
791+
subheader = filter_invites(f"in {ogg}")
792+
# subheader = f"-# [{subheader}]({jump_url})"
793+
embed[0].description = subheader
789794
embed[0].set_author(
790-
name=filter_invites(str(author)),
795+
name=filter_invites(author.display_name),
791796
icon_url=oga.display_avatar.replace(size=32).url,
792797
)
793798
else:
794-
content = f"{author}\n{quote(content)}" if content else str(author)
799+
content = f"{author}\n{quote(content)}" if content else author.display_name
795800
embed = None
796801
if attachments and author_perms.attach_files:
797802
if embed:

0 commit comments

Comments
 (0)