12 Commits

Author SHA1 Message Date
Tulir Asokan
546e5eee21 Bump version to 1.4.0 2020-03-01 14:22:14 +02:00
Tulir Asokan
0e5b7bc2db Use RelatesTo and RelationType classes 2020-03-01 14:06:07 +02:00
Tulir Asokan
25aa06e1ff Update copyright year 2020-03-01 13:57:20 +02:00
Tulir Asokan
4ade107370 Change rel_type to xyz.maubot.pong 2019-12-09 21:20:07 +02:00
Jason Volk
e9b4cd47a2 Add m.relates_to support in pong response content. 2019-12-09 21:18:44 +02:00
Tulir Asokan
4d3f4f1556 Add .gitlab-ci.yml 2019-07-28 22:09:46 +03:00
Tulir Asokan
0d8d59eb1a Fix incorrect html pong message and bump version to 1.3.1 2019-07-08 18:23:12 +03:00
Tulir Asokan
e5454924dd Bump version to 1.3.0 2019-07-08 10:55:45 +03:00
Tulir Asokan
d325076c9f Don't allow HTML in ping messages 2019-07-08 10:55:07 +03:00
Tulir Asokan
6268749a2e Include message from ping command in pong 2019-07-08 10:49:33 +03:00
Tulir Asokan
9a6e06cc29 Bump version to 1.2.0 2019-04-14 02:16:20 +03:00
Tulir Asokan
37df8c89d6 Use mention and event link instead of reply for pongs 2019-04-14 02:12:04 +03:00
4 changed files with 51 additions and 9 deletions

27
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,27 @@
image: dock.mau.dev/maubot/maubot
stages:
- build
variables:
PYTHONPATH: /opt/maubot
build:
stage: build
except:
- tags
script:
- python3 -m maubot.cli build -o xyz.maubot.$CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA.mbp
artifacts:
paths:
- "*.mbp"
build tags:
stage: build
only:
- tags
script:
- python3 -m maubot.cli build -o xyz.maubot.$CI_PROJECT_NAME-$CI_COMMIT_TAG.mbp
artifacts:
paths:
- "*.mbp"

View File

@@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2019 Tulir Asokan
Copyright (c) 2020 Tulir Asokan
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

29
echo.py
View File

@@ -1,7 +1,8 @@
from typing import Optional
from time import time
from html import escape
from mautrix.types import TextMessageEventContent, MessageType
from mautrix.types import TextMessageEventContent, MessageType, Format, RelatesTo, RelationType
from maubot import Plugin, MessageEvent
from maubot.handlers import command
@@ -34,17 +35,31 @@ class EchoBot(Plugin):
f"{cls.plural(minutes, 'minute')} and {cls.plural(seconds, 'second')}")
@command.new("ping", help="Ping")
async def ping_handler(self, evt: MessageEvent) -> None:
@command.argument("message", pass_raw=True, required=False)
async def ping_handler(self, evt: MessageEvent, message: str = "") -> None:
diff = int(time() * 1000) - evt.timestamp
content = TextMessageEventContent(msgtype=MessageType.NOTICE,
body="Pong! (ping took "
f"{self.prettify_diff(diff)} to arrive)")
pretty_diff = self.prettify_diff(diff)
text_message = f'"{message[:20]}" took' if message else "took"
html_message = f'"{escape(message[:20])}" took' if message else "took"
content = TextMessageEventContent(
msgtype=MessageType.NOTICE, format=Format.HTML,
body=f"{evt.sender}: Pong! (ping {text_message} {pretty_diff} to arrive)",
formatted_body=f"<a href='https://matrix.to/#/{evt.sender}'>{evt.sender}</a>: Pong! "
f"(<a href='https://matrix.to/#/{evt.room_id}/{evt.event_id}'>ping</a> {html_message} "
f"{pretty_diff} to arrive)",
relates_to=RelatesTo(
rel_type=RelationType("xyz.maubot.pong"),
event_id=evt.event_id,
))
pong_from = evt.sender.split(":", 1)[1]
content.relates_to["from"] = pong_from
content.relates_to["ms"] = diff
content["pong"] = {
"ms": diff,
"from": evt.sender.split(":", 1)[1],
"from": pong_from,
"ping": evt.event_id,
}
await evt.reply(content)
await evt.respond(content)
@command.new("echo", help="Repeat a message")
@command.argument("message", pass_raw=True)

View File

@@ -1,6 +1,6 @@
maubot: 0.1.0
id: xyz.maubot.echo
version: 1.1.1
version: 1.4.0
license: MIT
modules:
- echo