fix role mentions in stoat

This commit is contained in:
rambros 2026-03-19 22:42:40 +05:30
parent 518438cb09
commit 806966450b
4 changed files with 10 additions and 14 deletions

View file

@ -390,7 +390,7 @@ async def migrate_messages(
# Use custom clean_mentions with msg mentions for accuracy
content = clean_mentions(
msg.content,
msg.guild,
context.discord_reader.guild,
msg.mentions,
msg.role_mentions,
msg.channel_mentions,
@ -422,10 +422,10 @@ async def migrate_messages(
snapshot = msg.message_snapshots[0]
if not content: # Only update content if it wasn't already set (e.g., by thread_starter_message)
content = snapshot.content
if hasattr(msg, 'guild') and msg.guild:
if context.discord_reader.guild:
content = clean_mentions(
content,
msg.guild,
context.discord_reader.guild,
snapshot.mentions if hasattr(snapshot, 'mentions') else None,
snapshot.role_mentions if hasattr(snapshot, 'role_mentions') else None,
snapshot.channel_mentions if hasattr(snapshot, 'channel_mentions') else None, # Changed this line

View file

@ -285,7 +285,7 @@ class FluxerWriter:
# -# is Fluxer/Discord's subtext markdown: small, muted grey text
prefix = f"-# <t:{timestamp}:D>\n"
if is_forwarded:
prefix += "-# *forwarded*\n"
prefix += "-# *forwarded*\n"
display_content = content
if is_forwarded and content:
@ -345,7 +345,7 @@ class FluxerWriter:
# We add the author name to the prefix since bot name won't match
bot_prefix = f"-# <t:{timestamp}:D>\n"
if is_forwarded:
bot_prefix += "-# *forwarded*\n"
bot_prefix += "-# *forwarded*\n"
bot_prefix += f"-# · {author_name}\n"
final_bot_content = bot_prefix + display_content if display_content else bot_prefix

View file

@ -46,11 +46,7 @@ def clean_mentions(content: str, guild, user_mentions=None, role_mentions=None,
def replace_role(match):
rid = int(match.group(1))
# 0. Try native mapping first
if state:
target_role_id = state.get_target_role_id(str(rid))
if target_role_id:
return f"<@&{target_role_id}>"
# Stoat does not support migrating Discord Role mentions natively, always use the name as fallback
# 1. Try provided guild cache/list
role = guild.get_role(rid) or next((r for r in guild.roles if r.id == rid), None)
@ -393,7 +389,7 @@ async def migrate_messages(
# Use custom clean_mentions with msg mentions for accuracy
content = clean_mentions(
msg.content,
msg.guild,
context.discord_reader.guild,
msg.mentions,
msg.role_mentions,
msg.channel_mentions,
@ -421,10 +417,10 @@ async def migrate_messages(
snapshot = msg.message_snapshots[0]
if not content:
content = snapshot.content
if hasattr(msg, 'guild') and msg.guild:
if context.discord_reader.guild:
content = clean_mentions(
content,
msg.guild,
context.discord_reader.guild,
snapshot.mentions if hasattr(snapshot, 'mentions') else None,
snapshot.role_mentions if hasattr(snapshot, 'role_mentions') else None,
snapshot.channel_mentions if hasattr(snapshot, 'channel_mentions') else None,

View file

@ -316,7 +316,7 @@ class StoatWriter:
# Build content with timestamp prefix
prefix = f"###### <t:{timestamp}:D>\n"
if is_forwarded:
prefix += "##### *forwarded*\n"
prefix += "##### *forwarded*\n"
display_content = content
if is_forwarded and content: