mirror of
https://github.com/nexy7574/LCC-bot.git
synced 2024-09-20 02:26:32 +01:00
Add compatibility for the new bridge system
This commit is contained in:
parent
0eaff595fe
commit
46ee34332d
3 changed files with 50 additions and 23 deletions
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="dataSourceStorageLocal" created-in="PY-232.10072.31">
|
<component name="dataSourceStorageLocal" created-in="PY-232.10203.26">
|
||||||
<data-source name="main" uuid="28efee07-d306-4126-bf69-01008b4887e2">
|
<data-source name="main" uuid="28efee07-d306-4126-bf69-01008b4887e2">
|
||||||
<database-info product="SQLite" version="3.39.2" jdbc-version="2.1" driver-name="SQLite JDBC" driver-version="3.39.2.0" dbms="SQLITE" exact-version="3.39.2" exact-driver-version="3.39">
|
<database-info product="SQLite" version="3.39.2" jdbc-version="2.1" driver-name="SQLite JDBC" driver-version="3.39.2.0" dbms="SQLITE" exact-version="3.39.2" exact-driver-version="3.39">
|
||||||
<identifier-quote-string>"</identifier-quote-string>
|
<identifier-quote-string>"</identifier-quote-string>
|
||||||
|
|
|
@ -10,6 +10,7 @@ import re
|
||||||
import subprocess
|
import subprocess
|
||||||
import textwrap
|
import textwrap
|
||||||
import traceback
|
import traceback
|
||||||
|
import pydantic
|
||||||
import warnings
|
import warnings
|
||||||
from datetime import datetime, timedelta, timezone
|
from datetime import datetime, timedelta, timezone
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
@ -47,6 +48,26 @@ LTR = "\N{black rightwards arrow}\U0000fe0f"
|
||||||
RTL = "\N{leftwards black arrow}\U0000fe0f"
|
RTL = "\N{leftwards black arrow}\U0000fe0f"
|
||||||
|
|
||||||
|
|
||||||
|
class MessagePayload(pydantic.BaseModel):
|
||||||
|
class MessageAttachmentPayload(pydantic.BaseModel):
|
||||||
|
url: str
|
||||||
|
proxy_url: str
|
||||||
|
filename: str
|
||||||
|
size: int
|
||||||
|
width: int
|
||||||
|
height: int
|
||||||
|
content_type: str
|
||||||
|
|
||||||
|
message_id: int
|
||||||
|
author: str
|
||||||
|
avatar: str
|
||||||
|
content: str
|
||||||
|
clean_content: str
|
||||||
|
at: float
|
||||||
|
attachments: list[MessageAttachmentPayload] = []
|
||||||
|
reply_to: Optional["MessagePayload"] = None
|
||||||
|
|
||||||
|
|
||||||
async def _dc(client: discord.VoiceClient | None):
|
async def _dc(client: discord.VoiceClient | None):
|
||||||
if client is None:
|
if client is None:
|
||||||
return
|
return
|
||||||
|
@ -321,27 +342,33 @@ class Events(commands.Cog):
|
||||||
return
|
return
|
||||||
|
|
||||||
if message.channel.name == "femboy-hole":
|
if message.channel.name == "femboy-hole":
|
||||||
payload = {
|
def generate_payload(_message: discord.Message) -> MessagePayload:
|
||||||
"author": message.author.name,
|
_payload = MessagePayload(
|
||||||
"avatar": message.author.display_avatar.with_format("png").with_size(512).url,
|
message_id=_message.id,
|
||||||
"content": message.content,
|
author=_message.author.name,
|
||||||
"at": message.created_at.timestamp(),
|
avatar=_message.author.display_avatar.with_static_format("webp").with_size(512).url,
|
||||||
"attachments": [
|
content=_message.content or '',
|
||||||
{
|
clean_content=str(_message.clean_content or ''),
|
||||||
"url": a.url,
|
at=_message.created_at.timestamp()
|
||||||
"filename": a.filename,
|
)
|
||||||
"size": a.size,
|
for attachment in _message.attachments:
|
||||||
"width": a.width,
|
_payload.attachments.append(
|
||||||
"height": a.height,
|
MessagePayload.MessageAttachmentPayload(
|
||||||
"content_type": a.content_type,
|
url=attachment.url,
|
||||||
}
|
proxy_url=attachment.proxy_url,
|
||||||
for a in message.attachments
|
size=attachment.size,
|
||||||
],
|
width=attachment.width,
|
||||||
}
|
height=attachment.height,
|
||||||
if message.author.discriminator != "0":
|
content_type=attachment.content_type
|
||||||
payload["author"] += "#%s" % message.author.discriminator
|
)
|
||||||
if message.author != self.bot.user and (payload["content"] or payload["attachments"]):
|
)
|
||||||
await self.bot.bridge_queue.put(payload)
|
if _message.reference is not None and _message.reference.cached_message:
|
||||||
|
_payload.reply_to = generate_payload(_message)
|
||||||
|
return _payload
|
||||||
|
|
||||||
|
payload = generate_payload(message)
|
||||||
|
if message.author != self.bot.user and (payload.content or payload.attachments):
|
||||||
|
await self.bot.bridge_queue.put(payload.model_dump())
|
||||||
|
|
||||||
if message.channel.name == "pinboard" and not message.content.startswith(("#", "//", ";", "h!")):
|
if message.channel.name == "pinboard" and not message.content.startswith(("#", "//", ";", "h!")):
|
||||||
if message.type == discord.MessageType.pins_add:
|
if message.type == discord.MessageType.pins_add:
|
||||||
|
|
|
@ -254,7 +254,7 @@ async def bridge(req: Request):
|
||||||
if not channel:
|
if not channel:
|
||||||
raise HTTPException(status_code=404, detail="Channel does not exist.")
|
raise HTTPException(status_code=404, detail="Channel does not exist.")
|
||||||
|
|
||||||
if len(body["message"]) > 6000:
|
if len(body["message"]) > 4000:
|
||||||
raise HTTPException(status_code=400, detail="Message too long.")
|
raise HTTPException(status_code=400, detail="Message too long.")
|
||||||
paginator = Paginator(prefix="", suffix="", max_size=1990)
|
paginator = Paginator(prefix="", suffix="", max_size=1990)
|
||||||
for line in body["message"].splitlines():
|
for line in body["message"].splitlines():
|
||||||
|
|
Loading…
Reference in a new issue