feat: reply to all html files with their content
This commit is contained in:
commit
27a29a604a
7 changed files with 112 additions and 0 deletions
9
.envrc
Normal file
9
.envrc
Normal file
|
@ -0,0 +1,9 @@
|
|||
use flake .nix
|
||||
dotenv_if_exists
|
||||
|
||||
if on_git_branch; then
|
||||
echo
|
||||
git status --short --branch
|
||||
echo
|
||||
git fetch
|
||||
fi
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
maubot-htmlfile.zip
|
43
.nix/flake.lock
Normal file
43
.nix/flake.lock
Normal file
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-utils": {
|
||||
"locked": {
|
||||
"lastModified": 1667395993,
|
||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1669597967,
|
||||
"narHash": "sha256-R+2NaDkXsYkOpFOhmVR8jBZ77Pq55Z6ilaqwFLLn000=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "be9e3762e719211368d186f547f847737baad720",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
20
.nix/flake.nix
Normal file
20
.nix/flake.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
description = "A basic flake with a shell";
|
||||
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||
inputs.flake-utils.url = "github:numtide/flake-utils";
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils }:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
in
|
||||
{
|
||||
devShell = pkgs.mkShell {
|
||||
nativeBuildInputs = [ pkgs.bashInteractive ];
|
||||
buildInputs = with pkgs; [
|
||||
zip
|
||||
];
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
7
Makefile
Normal file
7
Makefile
Normal file
|
@ -0,0 +1,7 @@
|
|||
plugin: maubot.yaml htmlfile.py
|
||||
zip -9r maubot-htmlfile.zip maubot.yaml htmlfile.py
|
||||
|
||||
clean:
|
||||
rm maubot-htmlfile.zip
|
||||
|
||||
all: plugin
|
25
htmlfile.py
Normal file
25
htmlfile.py
Normal file
|
@ -0,0 +1,25 @@
|
|||
from mautrix.types import EventType, MessageType
|
||||
from mautrix.crypto import attachments
|
||||
|
||||
from maubot import Plugin, MessageEvent
|
||||
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")
|
||||
|
||||
await event.reply(file_content, allow_html = True)
|
7
maubot.yaml
Normal file
7
maubot.yaml
Normal file
|
@ -0,0 +1,7 @@
|
|||
maubot: 0.1.0
|
||||
id: net.molez.maubot.htmlfile
|
||||
version: 0.1.0
|
||||
license: MIT
|
||||
modules:
|
||||
- htmlfile
|
||||
main_class: HtmlFile
|
Loading…
Reference in a new issue