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, 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, 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))