Initial commit

main
KKlochko 2 years ago committed by GitHub
commit 2cc416ac00
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,6 @@
/venv/
/crypto_store/
/session.txt
/.env
/.idea
/config.toml

6
.gitignore vendored

@ -0,0 +1,6 @@
/venv/
/crypto_store/
/session.txt
/.env
/.idea
/config.toml

@ -0,0 +1,10 @@
FROM python:3.10-slim
WORKDIR ./code
COPY ./requirements.txt .
RUN pip install python-olm --extra-index-url https://gitlab.matrix.org/api/v4/projects/27/packages/pypi/simple
RUN pip install -r requirements.txt
COPY . .

@ -0,0 +1,24 @@
### This is a template for writing a bot using simplematrixbotlib
#### Setup
First clone repo and create `.env` and `config.toml`
Examples:
`.env`
```dotenv
USERNAME=@catbot:example.com
PASSWORD=password
SERVER=https://example.com
```
[allowlist and blocklist formats](https://simple-matrix-bot-lib.readthedocs.io/en/latest/examples.html#id2)
`config.toml`
```toml
[simplematrixbotlib.config]
allowlist = []
blocklist = []
admin_id = '@admin:example.com'
```

@ -0,0 +1,4 @@
[simplematrixbotlib.config]
allowlist = []
blocklist = []
admin_id = '@admin:example.com'

@ -0,0 +1,12 @@
version: '3'
services:
bot:
build: .
volumes:
- '.:/code'
- './crypto_store/:/code/crypto_store/'
- './session.txt:/code/session.txt'
command: 'python src/main.py'
env_file: '.env'

@ -0,0 +1,5 @@
simplematrixbotlib~=2.8.0
environs~=9.5.0
aiohttp~=3.8.3
python-olm
matrix-nio[e2e]

@ -0,0 +1,14 @@
import nio
import simplematrixbotlib as botlib
from .help import help_handler
def setup(bot: botlib.Bot, prefix: str):
@bot.listener.on_message_event
async def help_command(room: nio.rooms.MatrixRoom, message: nio.events.room_events.Event):
match = botlib.MessageMatch(room, message, bot, prefix=prefix)
if match.is_not_from_this_bot() and match.prefix() and match.command('help'):
await help_handler(bot=bot, room_id=room.room_id, sender=message.sender, admin_id=bot.config.admin_id)

@ -0,0 +1,10 @@
import simplematrixbotlib as botlib
async def help_handler(room_id: str, bot: botlib.Bot, sender: str, admin_id: str):
msg: str = 'Hi **{}**\n\n' \
'Prefix: `!`\n' \
'Its a simplematrixbotlib template!\n' \
'Admin contact: **{}**'
await bot.api.send_markdown_message(room_id=room_id, message=msg.format(sender, admin_id))

@ -0,0 +1,40 @@
from dataclasses import dataclass
from environs import Env
import simplematrixbotlib as botlib
from handlers import setup
env = Env()
env.read_env()
USERNAME = env('USERNAME')
PASSWORD = env('PASSWORD')
SERVER = env('SERVER')
@dataclass
class MyConfig(botlib.Config):
_admin_id: str = 'unknown'
_lang: str = 'en'
@property
def admin_id(self) -> str:
return self._admin_id
@admin_id.setter
def admin_id(self, value: str) -> None:
self._admin_id = value
config = MyConfig()
config.load_toml('config.toml')
config.encryption_enabled = True
config.emoji_verify = True
config.ignore_unverified_devices = True
config.store_path = './crypto_store/'
creds = botlib.Creds(SERVER, USERNAME, PASSWORD)
bot = botlib.Bot(creds, config)
PREFIX = '!'
setup(bot, prefix=PREFIX)
bot.run()
Loading…
Cancel
Save