diff options
-rw-r--r-- | teleport/__init__.py | 5 | ||||
-rw-r--r-- | teleport/info.json | 5 | ||||
-rw-r--r-- | teleport/teleport.py | 48 |
3 files changed, 58 insertions, 0 deletions
diff --git a/teleport/__init__.py b/teleport/__init__.py new file mode 100644 index 0000000..f5b87c9 --- /dev/null +++ b/teleport/__init__.py @@ -0,0 +1,5 @@ +from .teleport import Teleport + + +async def setup(bot): + await bot.add_cog(Teleport(bot)) diff --git a/teleport/info.json b/teleport/info.json new file mode 100644 index 0000000..58b1a65 --- /dev/null +++ b/teleport/info.json @@ -0,0 +1,5 @@ +{ + "author": ["Arjun Satarkar"], + "description": "Teleport between channels to move a discussion easily.", + "short": "Teleport between channels to move a discussion easily." +} diff --git a/teleport/teleport.py b/teleport/teleport.py new file mode 100644 index 0000000..2f4b5a6 --- /dev/null +++ b/teleport/teleport.py @@ -0,0 +1,48 @@ +import discord +from redbot.core import commands + + +class Teleport(commands.Cog): + def __init__(self, bot): + self.bot = bot + + @commands.command() + @commands.guild_only() + async def teleport( + self, + ctx: commands.GuildContext, + destination: discord.abc.GuildChannel | discord.Thread, + ): + if isinstance(destination, discord.Thread): + parent = destination.parent + else: + parent = destination + + if not ( + hasattr(destination, "send") + and parent.permissions_for(ctx.author).send_messages + and ( + not isinstance(destination, discord.Thread) + or parent.permissions_for(ctx.author).send_messages_in_threads + ) + ): + await ctx.react_quietly("❌") + return + + portal_to_template = "Portal opened to {dest}\n*(done by {user})*" + source_message = await ctx.send( + portal_to_template.format( + dest=destination.mention, user=ctx.author.mention + ), + allowed_mentions=discord.AllowedMentions.none(), + ) + dest_message = await destination.send( + f"Portal opened from {source_message.jump_url}\n*(done by {ctx.author.mention})*", + allowed_mentions=discord.AllowedMentions.none(), + ) + await source_message.edit( + content=portal_to_template.format( + dest=dest_message.jump_url, user=ctx.author.mention + ), + allowed_mentions=discord.AllowedMentions.none(), + ) |