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
|
maubot-htmlfile.zip
|
||||||
|
@ -7,13 +7,30 @@
|
|||||||
flake-utils.lib.eachDefaultSystem (system:
|
flake-utils.lib.eachDefaultSystem (system:
|
||||||
let
|
let
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
|
||||||
|
python = pkgs.python3;
|
||||||
|
python-with-packages = python.withPackages (p: with p; [
|
||||||
|
python-lsp-server
|
||||||
|
rope
|
||||||
|
pyflakes
|
||||||
|
mccabe
|
||||||
|
pycodestyle
|
||||||
|
autopep8
|
||||||
|
]);
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
devShell = pkgs.mkShell {
|
devShell = pkgs.mkShell {
|
||||||
nativeBuildInputs = [ pkgs.bashInteractive ];
|
nativeBuildInputs = [ pkgs.bashInteractive ];
|
||||||
buildInputs = with pkgs; [
|
buildInputs = with pkgs; [
|
||||||
|
python-with-packages
|
||||||
|
nodePackages.pyright
|
||||||
zip
|
zip
|
||||||
];
|
];
|
||||||
|
shellHook = ''
|
||||||
|
python -m venv .venv
|
||||||
|
source .venv/bin/activate
|
||||||
|
pip install --requirement requirements.txt
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
29
htmlfile.py
29
htmlfile.py
@ -1,5 +1,7 @@
|
|||||||
from mautrix.types import EventType, MessageType
|
# pyright: reportPrivateImportUsage=false
|
||||||
from mautrix.crypto import attachments
|
|
||||||
|
from mautrix.types import EventType, MediaMessageEventContent, MessageType
|
||||||
|
from mautrix.crypto.attachments import decrypt_attachment
|
||||||
|
|
||||||
from maubot import Plugin, MessageEvent
|
from maubot import Plugin, MessageEvent
|
||||||
from maubot.handlers import event
|
from maubot.handlers import event
|
||||||
@ -8,18 +10,19 @@ from maubot.handlers import event
|
|||||||
class HtmlFile(Plugin):
|
class HtmlFile(Plugin):
|
||||||
@event.on(EventType.ROOM_MESSAGE)
|
@event.on(EventType.ROOM_MESSAGE)
|
||||||
async def event_handler(self, event: MessageEvent) -> None:
|
async def event_handler(self, event: MessageEvent) -> None:
|
||||||
|
|
||||||
# self.log.debug(f"received: {event}")
|
|
||||||
|
|
||||||
if not event.content.msgtype == MessageType.FILE:
|
if not event.content.msgtype == MessageType.FILE:
|
||||||
return
|
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:
|
else:
|
||||||
enc_file = event.content.file
|
content = MediaMessageEventContent.deserialize(event.content.serialize())
|
||||||
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")
|
|
||||||
|
|
||||||
await event.reply(file_content, allow_html = True)
|
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