98 lines
3.6 KiB
JavaScript
98 lines
3.6 KiB
JavaScript
import {md5} from "js-md5";
|
||
import {BOT_VERSION, JITSI_ADMIN_URL, SHOW_WARNING_OF_MIM} from "./config.mjs";
|
||
import gitRepoInfo from 'git-repo-info';
|
||
|
||
export class conferenceUtils {
|
||
client;
|
||
|
||
constructor(client) {
|
||
this.client = client;
|
||
}
|
||
|
||
async createConference(roomId) {
|
||
var roomDescription = await this.getRoomTopic(roomId)
|
||
const escapedBaseUrl = JITSI_ADMIN_URL.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
||
const regex = new RegExp(escapedBaseUrl + '[^\\s\\n]+');
|
||
const match = roomDescription.match(regex);
|
||
if (match) {
|
||
return match[0];
|
||
}
|
||
|
||
var hash = md5(roomId);
|
||
return JITSI_ADMIN_URL + '/m/' + hash;
|
||
}
|
||
|
||
async sendMessageWithUrl(roomId) {
|
||
var url = await this.createConference(roomId);
|
||
await this.client.sendText(roomId, 'Die Konferenz für diesen Raum läuft unter dieser URL: ' + url);
|
||
}
|
||
|
||
async sendJoinConference(roomId) {
|
||
var url = await this.createConference(roomId);
|
||
await this.client.sendHtmlText(roomId, '<a href ="' + url + '">Hier der Konferenz beitreten</a> ');
|
||
}
|
||
|
||
async inviteAll(roomId) {
|
||
var url = await this.createConference(roomId);
|
||
var text = '@room <h2>Diese Konferenz startet gerade</h2><br><a href="'+url+'">➡️Jetzt dieser Konfernz beitreten</a>'
|
||
await this.client.sendHtmlText(roomId, text);
|
||
}
|
||
|
||
async changeRoomName(roomId) {
|
||
var roomDescription = await this.getRoomTopic(roomId)
|
||
|
||
var conferenceUrl = await this.createConference(roomId);
|
||
if (!roomDescription.includes(conferenceUrl)) {
|
||
try {
|
||
await this.client.sendStateEvent(roomId, 'm.room.topic', '', {'topic': roomDescription + "\n\r" + conferenceUrl})
|
||
}catch (e) {
|
||
await this.client.sendText(roomId, 'Der Bot benötigt die Berechtigung "Moderator" um das Raumthema ändern zu dürfen.');
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
async sendHelp(roomId) {
|
||
await this.client.sendText(
|
||
roomId,
|
||
'Neue Konferenz erstellen: !jitsi\n\r' +
|
||
'Direkt der Konferenz beitreten: !join\n\r' +
|
||
'Konferenz für alle starten: !starten\n\r'+
|
||
'Diese Hilfeseite anzeigen: !hilfe\n\r'
|
||
);
|
||
}
|
||
async getRoomTopic(roomId){
|
||
var roomDescription = '';
|
||
try {
|
||
roomDescription = await this.client.getRoomStateEvent(roomId, 'm.room.topic');
|
||
roomDescription = roomDescription.topic;
|
||
}catch (e) {
|
||
}
|
||
return roomDescription;
|
||
}
|
||
|
||
async getVersion(roomId) {
|
||
const repoInfo = gitRepoInfo();
|
||
|
||
this.client.sendText(roomId, 'Version: '+BOT_VERSION);
|
||
}
|
||
async sendWelcome(roomId) {
|
||
var text= '<h2>Hallo, ich bin der Raumassistent.</h2><br> Ein Teammitglied hat mich in diesen Raum eingeladen.<br><br>';
|
||
|
||
if (SHOW_WARNING_OF_MIM){
|
||
text += '⚠️ Kleiner Disclaimer zu Beginn: Ich kann <b>alle Nachrichten</b> in diesem Chat mitlesen. Nicht nur Nachrichten an mich.<br>'
|
||
}
|
||
|
||
text +='<b>Hier sind einige Dinge, die ich tun kann:</b>' +
|
||
'<ul>'+
|
||
'<li>📹️ Ich kann Videokonfernzen in diesem Raumn erstellen und verwalten</li>'
|
||
'<li>✍️ Sie können mit mir chatten wie mit einem normalen Teilnehmenden.</li>' +
|
||
'<li>✅ Um auf alle meine Funktionen zugreifen zu können machen Sie mich bitte zu einem MODERATOR.</li>' +
|
||
'<li>❓️ Alle weiteren Informationen erhalten sie durch tippen von "!hilfe"</li>'
|
||
+'</ul>';
|
||
|
||
|
||
this.client.sendHtmlText(roomId, text);
|
||
}
|
||
}
|
||
|