refactor: format and lint
This commit is contained in:
parent
27a29a604a
commit
7c27acf00e
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
||||
.venv/
|
||||
maubot-htmlfile.zip
|
||||
|
@ -7,13 +7,30 @@
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
|
||||
python = pkgs.python3;
|
||||
python-with-packages = python.withPackages (p: with p; [
|
||||
python-lsp-server
|
||||
rope
|
||||
pyflakes
|
||||
mccabe
|
||||
pycodestyle
|
||||
autopep8
|
||||
]);
|
||||
in
|
||||
{
|
||||
devShell = pkgs.mkShell {
|
||||
nativeBuildInputs = [ pkgs.bashInteractive ];
|
||||
buildInputs = with pkgs; [
|
||||
python-with-packages
|
||||
nodePackages.pyright
|
||||
zip
|
||||
];
|
||||
shellHook = ''
|
||||
python -m venv .venv
|
||||
source .venv/bin/activate
|
||||
pip install --requirement requirements.txt
|
||||
'';
|
||||
};
|
||||
}
|
||||
);
|
||||
|
27
htmlfile.py
27
htmlfile.py
@ -1,5 +1,7 @@
|
||||
from mautrix.types import EventType, MessageType
|
||||
from mautrix.crypto import attachments
|
||||
# pyright: reportPrivateImportUsage=false
|
||||
|
||||
from mautrix.types import EventType, MediaMessageEventContent, MessageType
|
||||
from mautrix.crypto.attachments import decrypt_attachment
|
||||
|
||||
from maubot import Plugin, MessageEvent
|
||||
from maubot.handlers import event
|
||||
@ -8,18 +10,19 @@ from maubot.handlers import event
|
||||
class HtmlFile(Plugin):
|
||||
@event.on(EventType.ROOM_MESSAGE)
|
||||
async def event_handler(self, event: MessageEvent) -> None:
|
||||
|
||||
# self.log.debug(f"received: {event}")
|
||||
|
||||
if not event.content.msgtype == MessageType.FILE:
|
||||
return
|
||||
|
||||
if event.content.info.mimetype == "text/html":
|
||||
if event.content.url:
|
||||
file_content = (await self.client.download_media(url = event.content.url)).decode("utf-8")
|
||||
else:
|
||||
enc_file = event.content.file
|
||||
ciphertext = await self.client.download_media(url = enc_file.url)
|
||||
file_content = attachments.decrypt_attachment(ciphertext, enc_file.key.key, enc_file.hashes["sha256"], enc_file.iv).decode("utf-8")
|
||||
content = MediaMessageEventContent.deserialize(event.content.serialize())
|
||||
|
||||
file_content: str = ""
|
||||
if content.info and content.info.mimetype == "text/html":
|
||||
if content.url:
|
||||
file_content = (await self.client.download_media(url=content.url)).decode("utf-8")
|
||||
elif content.file and content.file.url:
|
||||
enc_file = content.file
|
||||
ciphertext = await self.client.download_media(url=content.file.url)
|
||||
file_content = decrypt_attachment(ciphertext, enc_file.key.key,
|
||||
enc_file.hashes["sha256"], enc_file.iv).decode("utf-8")
|
||||
if file_content:
|
||||
await event.reply(file_content, allow_html=True)
|
||||
|
30
requirements.txt
Normal file
30
requirements.txt
Normal file
@ -0,0 +1,30 @@
|
||||
aiohttp==3.8.3
|
||||
aiosignal==1.3.1
|
||||
aiosqlite==0.17.0
|
||||
async-timeout==4.0.2
|
||||
asyncpg==0.25.0
|
||||
attrs==22.1.0
|
||||
bcrypt==3.2.2
|
||||
cffi==1.15.1
|
||||
charset-normalizer==2.1.1
|
||||
click==8.1.3
|
||||
colorama==0.4.6
|
||||
commonmark==0.9.1
|
||||
frozenlist==1.3.3
|
||||
idna==3.4
|
||||
Jinja2==3.1.2
|
||||
MarkupSafe==2.1.1
|
||||
maubot==0.3.1
|
||||
mautrix==0.15.8
|
||||
multidict==6.0.2
|
||||
packaging==21.3
|
||||
prompt-toolkit==3.0.33
|
||||
pycparser==2.21
|
||||
pyparsing==3.0.9
|
||||
questionary==1.10.0
|
||||
ruamel.yaml==0.17.21
|
||||
ruamel.yaml.clib==0.2.7
|
||||
SQLAlchemy==1.3.24
|
||||
typing_extensions==4.4.0
|
||||
wcwidth==0.2.5
|
||||
yarl==1.8.1
|
Reference in New Issue
Block a user