Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
testing colored diffs in message edits (like github!)
Browse files
app.py
CHANGED
@@ -17,6 +17,7 @@ from pytz import timezone # for times
|
|
17 |
import asyncio # check if used
|
18 |
import logging
|
19 |
import urllib.parse
|
|
|
20 |
|
21 |
|
22 |
from discord.ui import Button, View
|
@@ -61,6 +62,18 @@ def extract_tenor_gif_url(content):
|
|
61 |
|
62 |
|
63 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
@bot.event
|
65 |
async def on_message(message):
|
66 |
try:
|
@@ -219,7 +232,12 @@ async def on_message_edit(before, after):
|
|
219 |
embed = Embed(color=Color.orange())
|
220 |
embed.set_author(name=f"{before.author} ID: {before.author.id}", icon_url=before.author.avatar.url if before.author.avatar else bot.user.avatar.url)
|
221 |
embed.title = "Message Edited"
|
222 |
-
embed.description = f"**Before:** {before.content or '*(empty message)*'}\n**After:** {after.content or '*(empty message)*'}"
|
|
|
|
|
|
|
|
|
|
|
223 |
embed.add_field(name="Author Username", value=before.author.name, inline=True)
|
224 |
embed.add_field(name="Channel", value=before.channel.mention, inline=True)
|
225 |
#embed.add_field(name="Message Created On", value=before.created_at.strftime("%Y-%m-%d %H:%M:%S UTC"), inline=True)
|
|
|
17 |
import asyncio # check if used
|
18 |
import logging
|
19 |
import urllib.parse
|
20 |
+
from difflib import SequenceMatcher
|
21 |
|
22 |
|
23 |
from discord.ui import Button, View
|
|
|
62 |
|
63 |
|
64 |
|
65 |
+
def highlight_diff(before: str, after: str) -> tuple[str, str]:
|
66 |
+
matcher = SequenceMatcher(None, before, after)
|
67 |
+
for tag, i1, i2, j1, j2 in matcher.get_opcodes():
|
68 |
+
if tag != "equal":
|
69 |
+
# Bold the changed segments
|
70 |
+
before_highlighted = before[:i1] + "**" + before[i1:i2] + "**" + before[i2:]
|
71 |
+
after_highlighted = after[:j1] + "**" + after[j1:j2] + "**" + after[j2:]
|
72 |
+
return before_highlighted, after_highlighted
|
73 |
+
return before, after
|
74 |
+
|
75 |
+
|
76 |
+
|
77 |
@bot.event
|
78 |
async def on_message(message):
|
79 |
try:
|
|
|
232 |
embed = Embed(color=Color.orange())
|
233 |
embed.set_author(name=f"{before.author} ID: {before.author.id}", icon_url=before.author.avatar.url if before.author.avatar else bot.user.avatar.url)
|
234 |
embed.title = "Message Edited"
|
235 |
+
#embed.description = f"**Before:** {before.content or '*(empty message)*'}\n**After:** {after.content or '*(empty message)*'}"
|
236 |
+
|
237 |
+
# testing
|
238 |
+
highlighted_before, highlighted_after = highlight_diff(before.content or "", after.content or "")
|
239 |
+
embed.description = f"**Before:** {highlighted_before or '*(empty message)*'}\n**After:** {highlighted_after or '*(empty message)*'}"
|
240 |
+
|
241 |
embed.add_field(name="Author Username", value=before.author.name, inline=True)
|
242 |
embed.add_field(name="Channel", value=before.channel.mention, inline=True)
|
243 |
#embed.add_field(name="Message Created On", value=before.created_at.strftime("%Y-%m-%d %H:%M:%S UTC"), inline=True)
|