aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--teleport/__init__.py5
-rw-r--r--teleport/info.json5
-rw-r--r--teleport/teleport.py48
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(),
+ )