93 lines
3.8 KiB
Python
93 lines
3.8 KiB
Python
# Copyright (C) 2020 by Animath
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
import os
|
|
|
|
from asgiref.sync import async_to_sync
|
|
from django.core.management import BaseCommand
|
|
from registration.models import AdminRegistration, Registration
|
|
from tfjm.matrix import Matrix, RoomPreset, RoomVisibility
|
|
|
|
|
|
class Command(BaseCommand):
|
|
def handle(self, *args, **options):
|
|
Matrix.set_display_name("Bot du TFJM²")
|
|
|
|
if not os.getenv("SYNAPSE_PASSWORD"):
|
|
avatar_uri = "plop"
|
|
else: # pragma: no cover
|
|
if not os.path.isfile(".matrix_avatar"):
|
|
stat_file = os.stat("tfjm/static/logo.svg")
|
|
with open("tfjm/static/logo.svg", "rb") as f:
|
|
resp = Matrix.upload(f, filename="logo.svg", content_type="image/svg",
|
|
filesize=stat_file.st_size)[0][0]
|
|
avatar_uri = resp.content_uri
|
|
with open(".matrix_avatar", "w") as f:
|
|
f.write(avatar_uri)
|
|
Matrix.set_avatar(avatar_uri)
|
|
|
|
with open(".matrix_avatar", "r") as f:
|
|
avatar_uri = f.read().rstrip(" \t\r\n")
|
|
|
|
if not async_to_sync(Matrix.resolve_room_alias)("#faq:tfjm.org"):
|
|
Matrix.create_room(
|
|
visibility=RoomVisibility.public,
|
|
alias="faq",
|
|
name="FAQ",
|
|
topic="Posez toutes vos questions ici !",
|
|
federate=False,
|
|
preset=RoomPreset.public_chat,
|
|
)
|
|
|
|
if not async_to_sync(Matrix.resolve_room_alias)("#annonces:tfjm.org"):
|
|
Matrix.create_room(
|
|
visibility=RoomVisibility.public,
|
|
alias="annonces",
|
|
name="Annonces",
|
|
topic="Informations importantes du TFJM²",
|
|
federate=False,
|
|
preset=RoomPreset.public_chat,
|
|
)
|
|
|
|
if not async_to_sync(Matrix.resolve_room_alias)("#je-cherche-une-equipe:tfjm.org"):
|
|
Matrix.create_room(
|
|
visibility=RoomVisibility.public,
|
|
alias="je-cherche-une-equipe",
|
|
name="Je cherche une équipe",
|
|
topic="Le Tinder du TFJM²",
|
|
federate=False,
|
|
preset=RoomPreset.public_chat,
|
|
)
|
|
|
|
if not async_to_sync(Matrix.resolve_room_alias)("#flood:tfjm.org"):
|
|
Matrix.create_room(
|
|
visibility=RoomVisibility.public,
|
|
alias="flood",
|
|
name="Flood",
|
|
topic="Discutez de tout et de rien !",
|
|
federate=False,
|
|
preset=RoomPreset.public_chat,
|
|
)
|
|
|
|
Matrix.set_room_avatar("#annonces:tfjm.org", avatar_uri)
|
|
Matrix.set_room_avatar("#faq:tfjm.org", avatar_uri)
|
|
Matrix.set_room_avatar("#je-cherche-une-equipe:tfjm.org", avatar_uri)
|
|
Matrix.set_room_avatar("#flood:tfjm.org", avatar_uri)
|
|
|
|
Matrix.set_room_power_level_event("#annonces:tfjm.org", "events_default", 50)
|
|
|
|
for r in Registration.objects.all():
|
|
Matrix.invite("#annonces:tfjm.org", f"@{r.matrix_username}:tfjm.org")
|
|
Matrix.invite("#faq:tfjm.org", f"@{r.matrix_username}:tfjm.org")
|
|
Matrix.invite("#je-cherche-une-equipe:tfjm.org",
|
|
f"@{r.matrix_username}:tfjm.org")
|
|
Matrix.invite("#flood:tfjm.org", f"@{r.matrix_username}:tfjm.org")
|
|
|
|
for admin in AdminRegistration.objects.all():
|
|
Matrix.set_room_power_level("#annonces:tfjm.org",
|
|
f"@{admin.matrix_username}:tfjm.org", 95)
|
|
Matrix.set_room_power_level("#faq:tfjm.org",
|
|
f"@{admin.matrix_username}:tfjm.org", 95)
|
|
Matrix.set_room_power_level("#flood:tfjm.org",
|
|
f"@{admin.matrix_username}:tfjm.org", 95)
|