Skip to content

Commit 82924d7

Browse files
committed
Add support for linked message editing
If a user edits a message in dm's the corresponding message in the thread channel will also get updated.
1 parent 45e39dc commit 82924d7

File tree

1 file changed

+25
-12
lines changed

1 file changed

+25
-12
lines changed

bot.py

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
SOFTWARE.
2323
'''
2424

25-
__version__ = '1.5.0'
25+
__version__ = '1.5.1'
2626

2727
from contextlib import redirect_stdout
2828
from urllib.parse import urlparse
@@ -167,10 +167,24 @@ async def on_message_delete(self, message):
167167
message_id = matches[0]
168168

169169
async for msg in channel.history():
170-
if msg.embeds:
171-
if f'Moderator - {message_id}' == msg.embeds[0].footer.text:
172-
await msg.delete()
173-
break
170+
if msg.embeds and f'Moderator - {message_id}' in msg.embeds[0].footer.text:
171+
await msg.delete()
172+
break
173+
174+
async def on_message_edit(self, before, after):
175+
if before.author.bot:
176+
return
177+
if isinstance(before.channel, discord.DMChannel):
178+
channel = await self.find_or_create_thread(before.author)
179+
async for msg in channel.history():
180+
if msg.embeds:
181+
embed = msg.embeds[0]
182+
if f'User - {before.id}' in embed.footer.text:
183+
if ' - (Edited)' not in embed.footer.text:
184+
embed.set_footer(text=embed.footer.text + ' - (Edited)')
185+
embed.description = after.content
186+
await msg.edit(embed=embed)
187+
break
174188

175189
def overwrites(self, ctx, modrole=None):
176190
'''Permision overwrites for the guild.'''
@@ -694,7 +708,7 @@ async def send_mail(self, message, channel, from_mod, delete_message=True):
694708
else:
695709
em.color=discord.Color.gold()
696710
em.set_author(name=str(author), icon_url=author.avatar_url)
697-
em.set_footer(text='User')
711+
em.set_footer(text=f'User - {message.id}')
698712

699713
await channel.trigger_typing()
700714
await channel.send(embed=em)
@@ -752,11 +766,11 @@ async def process_modmail(self, message):
752766
if str(message.author.id) in blocked:
753767
await message.author.send(embed=self.blocked_em)
754768
else:
755-
channel = await self.create_thread(message.author)
769+
channel = await self.find_or_create_thread(message.author)
756770
await self.send_mail(message, channel, from_mod=False)
757771

758772

759-
async def create_thread(self, user, *, creator=None, reopen=False):
773+
async def find_or_create_thread(self, user, *, creator=None, reopen=False):
760774

761775
guild = self.guild
762776
topic = f'User ID: {user.id}'
@@ -784,9 +798,8 @@ async def create_thread(self, user, *, creator=None, reopen=False):
784798

785799

786800
if channel is not None:
787-
if channel.category is archives:
788-
if creator: # thread appears to be closed
789-
await user.send(embed=em)
801+
if channel.category is archives: # thread appears to be closed
802+
if creator: await user.send(embed=em)
790803
await channel.edit(category=categ)
791804
info_description = info_description or f'{user.mention} has reopened this thread.'
792805
await channel.send(mention, embed=self.format_info(user, info_description))
@@ -841,7 +854,7 @@ async def contact(self, ctx, *, user: discord.Member=None):
841854
return await ctx.send('This user does not share any servers with the bot and is thus unreachable.')
842855

843856
categ = discord.utils.get(ctx.guild.categories, id=ctx.channel.category_id)
844-
channel = await self.create_thread(user, creator=ctx.author, reopen=reopen)
857+
channel = await self.find_or_create_thread(user, creator=ctx.author, reopen=reopen)
845858

846859
if channel is not ctx.channel:
847860
em = discord.Embed(title='Thread reopened' if reopen else 'Created thread')

0 commit comments

Comments
 (0)