update
This commit is contained in:
41
bot.py
Normal file
41
bot.py
Normal file
@@ -0,0 +1,41 @@
|
||||
import asyncio
|
||||
from nio import AsyncClient, MatrixRoom, RoomMessageText
|
||||
from config import settings
|
||||
|
||||
class MatrixBot:
|
||||
def __init__(self):
|
||||
self.client = AsyncClient(settings.homeserver_url, settings.matrix_user)
|
||||
self.room_id = settings.default_room_id
|
||||
|
||||
async def login(self):
|
||||
if settings.matrix_access_token:
|
||||
self.client.access_token = settings.matrix_access_token
|
||||
# We still need device_id maybe, but let's assume simple setup or login fallback
|
||||
else:
|
||||
resp = await self.client.login(settings.matrix_password)
|
||||
if hasattr(resp, 'access_token'):
|
||||
print(f"Logged in as {resp.user_id}")
|
||||
else:
|
||||
print(f"Failed to login: {resp}")
|
||||
raise Exception("Login failed")
|
||||
|
||||
async def send_message(self, message: str, html_message: str = None, room_id: str = None):
|
||||
target_room = room_id or self.room_id
|
||||
|
||||
content = {
|
||||
"msgtype": "m.text",
|
||||
"body": message
|
||||
}
|
||||
|
||||
if html_message:
|
||||
content["format"] = "org.matrix.custom.html"
|
||||
content["formatted_body"] = html_message
|
||||
|
||||
await self.client.room_send(
|
||||
room_id=target_room,
|
||||
message_type="m.room.message",
|
||||
content=content
|
||||
)
|
||||
|
||||
async def close(self):
|
||||
await self.client.close()
|
||||
Reference in New Issue
Block a user