commit
						2cc416ac00
					
				| @ -0,0 +1,6 @@ | |||||||
|  | /venv/ | ||||||
|  | /crypto_store/ | ||||||
|  | /session.txt | ||||||
|  | /.env | ||||||
|  | /.idea | ||||||
|  | /config.toml | ||||||
| @ -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…
					
					
				
		Reference in new issue