initial commit

This commit is contained in:
William Kray 2022-06-23 13:15:06 -07:00
commit 4fe90ec5e0
4 changed files with 64 additions and 0 deletions

2
README.md Normal file
View File

@ -0,0 +1,2 @@
# welcome bot

10
base-config.yaml Normal file
View File

@ -0,0 +1,10 @@
rooms:
- '!someroom:example.com'
- '!otherroom:example.com'
# add a room ID here to send a message to when someone joins the above rooms
# (optional)
notification_room:
message: |
Welcome! Please be sure to read the topic for helpful links and information.

9
maubot.yaml Normal file
View File

@ -0,0 +1,9 @@
maubot: 0.1.0
id: org.jobmachine.welcome
version: 0.0.1
modules:
- welcome
main_class: Greeter
extra_files:
- base-config.yaml
database: false

43
welcome.py Normal file
View File

@ -0,0 +1,43 @@
from typing import Awaitable, Type, Optional, Tuple
import json
import time
from mautrix.client import Client, InternalEventType, MembershipEventDispatcher, SyncStream
from mautrix.types import (Event, StateEvent, EventID, UserID, EventType,
RoomID, RoomAlias, ReactionEvent, RedactionEvent)
from mautrix.util.config import BaseProxyConfig, ConfigUpdateHelper
from maubot import Plugin, MessageEvent
from maubot.handlers import command, event
class Config(BaseProxyConfig):
def do_update(self, helper: ConfigUpdateHelper) -> None:
helper.copy("rooms")
helper.copy("message")
helper.copy("notification_room")
class Greeter(Plugin):
async def start(self) -> None:
await super().start()
self.config.load_and_update()
self.client.add_dispatcher(MembershipEventDispatcher)
@event.on(InternalEventType.JOIN)
async def greet(self, evt: StateEvent) -> None:
if evt.room_id in self.config["rooms"]:
if evt.source & SyncStream.STATE:
return
else:
#await self.client.send_markdown(evt.room_id, self.config["message"], allow_html=True)
await self.client.send_notice(evt.room_id, html=self.config["message"])
if self.config["notification_room"]:
await self.client.send_markdown(self.config["notification_room"], f"User {evt.sender} joined \
{evt.room_id}")
@classmethod
def get_config_class(cls) -> Type[BaseProxyConfig]:
return Config