feat(bot): add manual-share cog forwarding channel messages to #inbox
This commit is contained in:
parent
9971632cd1
commit
8d8761a79d
2 changed files with 42 additions and 0 deletions
0
bot/chorus_bot/cogs/__init__.py
Normal file
0
bot/chorus_bot/cogs/__init__.py
Normal file
42
bot/chorus_bot/cogs/manual_share.py
Normal file
42
bot/chorus_bot/cogs/manual_share.py
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
import discord
|
||||
from discord.ext import commands
|
||||
from chorus_bot.modality_map import modality_for_channel
|
||||
from chorus_bot.ping import build_ping_embed
|
||||
|
||||
|
||||
class ManualShareCog(commands.Cog):
|
||||
"""Watches per-modality channels; forwards any new message as a ping in #inbox."""
|
||||
|
||||
def __init__(self, bot: commands.Bot, config):
|
||||
self.bot = bot
|
||||
self.config = config
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_message(self, message: discord.Message):
|
||||
if message.author.bot:
|
||||
return
|
||||
if message.channel.id == self.config.inbox_channel_id:
|
||||
return # inbox itself is not a source channel
|
||||
|
||||
modality = modality_for_channel(message.channel.name)
|
||||
if modality is None:
|
||||
return
|
||||
|
||||
content = message.content or "(attachment only — see original message)"
|
||||
snippet = content if len(content) <= 120 else content[:117] + "..."
|
||||
|
||||
embed = build_ping_embed(
|
||||
modality=modality,
|
||||
sender_id=None,
|
||||
snippet=snippet,
|
||||
raw_content=content,
|
||||
captured_at=message.created_at,
|
||||
)
|
||||
|
||||
inbox = self.bot.get_channel(self.config.inbox_channel_id)
|
||||
role_mention = f"<@&{self.config.triage_role_id}>"
|
||||
await inbox.send(content=role_mention, embed=embed)
|
||||
|
||||
|
||||
async def setup(bot: commands.Bot, config):
|
||||
await bot.add_cog(ManualShareCog(bot, config))
|
||||
Loading…
Reference in a new issue