Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
revert; trying diffs again
Browse files
app.py
CHANGED
@@ -17,7 +17,6 @@ from pytz import timezone # for times
|
|
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
|
@@ -61,22 +60,10 @@ def extract_tenor_gif_url(content):
|
|
61 |
return None
|
62 |
|
63 |
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
return
|
68 |
-
|
69 |
-
def highlight_diff(before: str, after: str) -> tuple[str, str]:
|
70 |
-
before_escaped = escape_markdown(before)
|
71 |
-
after_escaped = escape_markdown(after)
|
72 |
-
|
73 |
-
matcher = SequenceMatcher(None, before_escaped, after_escaped)
|
74 |
-
for tag, i1, i2, j1, j2 in matcher.get_opcodes():
|
75 |
-
if tag != "equal":
|
76 |
-
before_highlighted = before_escaped[:i1] + "**" + before_escaped[i1:i2] + "**" + before_escaped[i2:]
|
77 |
-
after_highlighted = after_escaped[:j1] + "**" + after_escaped[j1:j2] + "**" + after_escaped[j2:]
|
78 |
-
return before_highlighted, after_highlighted
|
79 |
-
return before_escaped, after_escaped
|
80 |
|
81 |
|
82 |
|
@@ -235,15 +222,17 @@ async def on_message_edit(before, after):
|
|
235 |
return
|
236 |
|
237 |
if before.content != after.content:
|
|
|
|
|
|
|
238 |
embed = Embed(color=Color.orange())
|
239 |
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)
|
240 |
embed.title = "Message Edited"
|
241 |
#embed.description = f"**Before:** {before.content or '*(empty message)*'}\n**After:** {after.content or '*(empty message)*'}"
|
|
|
|
|
242 |
|
243 |
-
|
244 |
-
highlighted_before, highlighted_after = highlight_diff(before.content or "", after.content or "")
|
245 |
-
embed.description = f"**Before:** {highlighted_before or '*(empty message)*'}\n**After:** {highlighted_after or '*(empty message)*'}"
|
246 |
-
|
247 |
embed.add_field(name="Author Username", value=before.author.name, inline=True)
|
248 |
embed.add_field(name="Channel", value=before.channel.mention, inline=True)
|
249 |
#embed.add_field(name="Message Created On", value=before.created_at.strftime("%Y-%m-%d %H:%M:%S UTC"), inline=True)
|
@@ -256,6 +245,7 @@ async def on_message_edit(before, after):
|
|
256 |
#embed.set_footer(text=f"{datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S UTC')}")
|
257 |
embed.set_footer(text=f"{convert_to_timezone(datetime.utcnow(), zurich_tz)}")
|
258 |
await bot.log_channel.send(embed=embed)
|
|
|
259 |
|
260 |
except Exception as e:
|
261 |
print(f"on_message_edit Error: {e}")
|
@@ -643,4 +633,4 @@ with gr.Blocks() as demo:
|
|
643 |
r"""
|
644 |
# discord bot
|
645 |
""")
|
646 |
-
demo.launch()
|
|
|
17 |
import asyncio # check if used
|
18 |
import logging
|
19 |
import urllib.parse
|
|
|
20 |
|
21 |
|
22 |
from discord.ui import Button, View
|
|
|
60 |
return None
|
61 |
|
62 |
|
63 |
+
def generate_diff(before, after):
|
64 |
+
# Only show changed lines
|
65 |
+
diff_lines = list(ndiff([before], [after]))
|
66 |
+
return "```diff\n" + "\n".join(diff_lines) + "\n```"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
|
68 |
|
69 |
|
|
|
222 |
return
|
223 |
|
224 |
if before.content != after.content:
|
225 |
+
diff_text = generate_diff(before.content or "", after.content or "")
|
226 |
+
diff_msg = await bot.log_channel.send(diff_text) # Step 3: this shows colors
|
227 |
+
|
228 |
embed = Embed(color=Color.orange())
|
229 |
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)
|
230 |
embed.title = "Message Edited"
|
231 |
#embed.description = f"**Before:** {before.content or '*(empty message)*'}\n**After:** {after.content or '*(empty message)*'}"
|
232 |
+
embed.description = "See diff below:"
|
233 |
+
embed.add_field(name="Diff Reference", value=f"[Jump to diff]({diff_msg.jump_url})", inline=False)
|
234 |
|
235 |
+
|
|
|
|
|
|
|
236 |
embed.add_field(name="Author Username", value=before.author.name, inline=True)
|
237 |
embed.add_field(name="Channel", value=before.channel.mention, inline=True)
|
238 |
#embed.add_field(name="Message Created On", value=before.created_at.strftime("%Y-%m-%d %H:%M:%S UTC"), inline=True)
|
|
|
245 |
#embed.set_footer(text=f"{datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S UTC')}")
|
246 |
embed.set_footer(text=f"{convert_to_timezone(datetime.utcnow(), zurich_tz)}")
|
247 |
await bot.log_channel.send(embed=embed)
|
248 |
+
|
249 |
|
250 |
except Exception as e:
|
251 |
print(f"on_message_edit Error: {e}")
|
|
|
633 |
r"""
|
634 |
# discord bot
|
635 |
""")
|
636 |
+
demo.launch()
|