From 1aaf0d366bf9d12ea9dd8a48ea0f053a8e7d97e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sk=C3=BDpala?= Date: Wed, 17 May 2023 21:29:35 +0200 Subject: [PATCH] Added message forwarding --- bin/hrochobot | 1 + hrochobot/cogs/messages.py | 37 +++++++++++++++++++++++++++++++ hrochobot/utils/json_templates.py | 1 + 3 files changed, 39 insertions(+) create mode 100644 hrochobot/cogs/messages.py diff --git a/bin/hrochobot b/bin/hrochobot index 8f73143..ae6ba5f 100755 --- a/bin/hrochobot +++ b/bin/hrochobot @@ -21,6 +21,7 @@ bot = commands.Bot() cogs_list = [ 'basic', 'roles', + 'messages', 'ksp', ] diff --git a/hrochobot/cogs/messages.py b/hrochobot/cogs/messages.py new file mode 100644 index 0000000..2a582c6 --- /dev/null +++ b/hrochobot/cogs/messages.py @@ -0,0 +1,37 @@ +import discord +from discord.ext import commands +from discord.utils import get +import hrochobot.utils.data as data + +MESSAGES_JSON = "messages" + +def as_reply(message: str): + return "\n".join(map(lambda x: f"> {x}", message.split('\n'))) + +class Messages(commands.Cog): + def __init__(self, bot): + self.bot = bot + + @discord.message_command() + async def forward(self, ctx: discord.Interaction, message: discord.Message): + messages_json = data.load_guild_data(ctx.guild.id, MESSAGES_JSON) + if "forward_channel" not in messages_json: + return await ctx.respond(f"Forwarding channel not set.", ephemeral=True) + + forward_channel = get(ctx.guild.channels, id=messages_json["forward_channel"]) + header_text = f"{ctx.author.mention} forwarded:\n{message.author.mention} wrote in {message.channel.mention}:\n" + await forward_channel.send(f"{header_text}{as_reply(message.clean_content)}") + return await ctx.respond("Message successfully forwarded.", ephemeral=True) + + @discord.slash_command(description="Sets channel for forwarding.") + @discord.option("channel", discord.TextChannel, description="Channel for forwarding.") + @discord.default_permissions(administrator=True) + async def set_forward_channel(self, ctx: discord.Interaction, channel: discord.TextChannel): + messages_json = data.load_guild_data(ctx.guild.id, MESSAGES_JSON) + messages_json["forward_channel"] = channel.id + data.dump_guild_data(ctx.guild.id, MESSAGES_JSON, messages_json) + return await ctx.respond(f"Forwarding channel set to {channel.mention}.\n" + \ + "Remember to set permissions for forwarding.", ephemeral=True) + +def setup(bot): + bot.add_cog(Messages(bot)) diff --git a/hrochobot/utils/json_templates.py b/hrochobot/utils/json_templates.py index 3aaaa30..ced3368 100644 --- a/hrochobot/utils/json_templates.py +++ b/hrochobot/utils/json_templates.py @@ -1,3 +1,4 @@ TEMPLATES = { 'roles.json' : '{"secret_roles": {}}', + 'messages.json' : '{}', }