Move command handlers to own module and add clean-rooms command (ref #59)

This commit is contained in:
Tulir Asokan
2018-02-13 00:08:21 +02:00
parent b6d1f3b403
commit e42fcd2fb3
9 changed files with 766 additions and 534 deletions
+26
View File
@@ -29,6 +29,7 @@ from telethon.tl.functions.messages import *
from telethon.tl.functions.channels import *
from telethon.errors.rpc_error_list import *
from telethon.tl.types import *
from mautrix_appservice import MatrixRequestError
from .db import Portal as DBPortal, Message as DBMessage
from . import puppet as p, user as u, formatter
@@ -355,6 +356,31 @@ class Portal:
return link.link
async def get_authenticated_matrix_users(self):
members = await self.main_intent.get_room_members(self.mxid)
authenticated = []
for member in members:
if p.Puppet.get_id_from_mxid(member) or member == self.main_intent.mxid:
continue
user = u.User.get_by_mxid(member)
if user.has_full_access:
authenticated.append(user)
return authenticated
@staticmethod
async def cleanup_room(intent, room_id, type="Portal"):
for user in await intent.get_room_members(room_id):
if user != intent.mxid:
try:
await intent.kick(room_id, user, f"{type} deleted.")
except MatrixRequestError:
pass
await intent.leave_room(room_id)
async def cleanup_and_delete(self):
await self.cleanup_room(self.main_intent, self.mxid)
self.delete()
# endregion
# region Matrix event handling