summaryrefslogtreecommitdiff
path: root/matrix.js
diff options
context:
space:
mode:
authorRaindropsSys <contact@minteck.org>2023-05-12 16:43:00 +0200
committerRaindropsSys <contact@minteck.org>2023-05-12 16:43:00 +0200
commit32bed03d78e8bc20ae2e81d9379bf63f4a58caba (patch)
tree3bcf08f8ff48af67e7cd7a4e1c776c27a8f4c159 /matrix.js
parent2f160cbdf67f40c71ddafe62eb502fc443ab9e90 (diff)
downloadbutterscotch-32bed03d78e8bc20ae2e81d9379bf63f4a58caba.tar.gz
butterscotch-32bed03d78e8bc20ae2e81d9379bf63f4a58caba.tar.bz2
butterscotch-32bed03d78e8bc20ae2e81d9379bf63f4a58caba.zip
Updated 19 files and added 2 files (automated)
Diffstat (limited to 'matrix.js')
-rw-r--r--matrix.js166
1 files changed, 88 insertions, 78 deletions
diff --git a/matrix.js b/matrix.js
index 2318693..3ce141d 100644
--- a/matrix.js
+++ b/matrix.js
@@ -1,94 +1,104 @@
-const sdk = require("matrix-js-sdk");
-const showdown = require('showdown');
+function startMatrix() {
+ try {
+ const sdk = require("matrix-js-sdk");
+ const showdown = require('showdown');
-global.matrixSend = (room, message, data) => {
- return new Promise((res, rej) => {
- client.sendEvent(room, "m.room.message", {
- msgtype: "m.text",
- body: data ?? message,
- format: "org.matrix.custom.html",
- formatted_body: markdown(message),
- }, "", (err, response) => {
- if (err) rej(err);
- res(response);
- });
- })
-}
+ global.matrixSend = (room, message, data) => {
+ return new Promise((res, rej) => {
+ client.sendEvent(room, "m.room.message", {
+ msgtype: "m.text",
+ body: data ?? message,
+ format: "org.matrix.custom.html",
+ formatted_body: markdown(message),
+ }, "", (err, response) => {
+ if (err) rej(err);
+ res(response);
+ });
+ })
+ }
-global.markdown = (text) => {
- let converter = new showdown.Converter();
- return converter.makeHtml(text);
-}
+ global.markdown = (text) => {
+ let converter = new showdown.Converter();
+ return converter.makeHtml(text);
+ }
-const client = sdk.createClient({
- baseUrl: "https://chat.equestria.dev",
- userId: require('./credentials.json').username,
- accessToken: require('./credentials.json').token
-});
+ const client = sdk.createClient({
+ baseUrl: "https://chat.equestria.dev",
+ userId: require('./credentials.json').username,
+ accessToken: require('./credentials.json').token
+ });
-(async () => {
- await client.startClient({ initialSyncLimit: 0 });
+ (async () => {
+ await client.startClient({ initialSyncLimit: 0 });
- client.once("sync", async function (state, prevState, res) {
- if (state === "PREPARED") {
- console.log("Ready!");
+ client.once("sync", async function (state, prevState, res) {
+ if (state === "PREPARED") {
+ console.log("Ready!");
- client.setPresence({
- presence: "online"
+ client.setPresence({
+ presence: "online"
+ });
+ } else {
+ console.log(state);
+ process.exit(1);
+ }
});
- } else {
- console.log(state);
- process.exit(1);
- }
- });
- client.on("Room.timeline", function (event, room) {
- if (event.getType() !== "m.room.message") {
- return;
- }
+ client.on("Room.timeline", function (event, room) {
+ if (event.getType() !== "m.room.message") {
+ return;
+ }
- if (new Date().getTime() - event.event.origin_server_ts < 1000 && event.sender.userId !== require('./credentials.json').username) {
- let message = event.event.content.body;
+ if (new Date().getTime() - event.event.origin_server_ts < 1000 && event.sender.userId !== require('./credentials.json').username) {
+ let message = event.event.content.body;
- if (event.event.content.formatted_body && event.event.content.formatted_body.startsWith("<mx-reply>")) {
- message = event.event.content.formatted_body.split("</mx-reply>")[1];
- }
+ if (event.event.content.formatted_body && event.event.content.formatted_body.startsWith("<mx-reply>")) {
+ message = event.event.content.formatted_body.split("</mx-reply>")[1];
+ }
- if (message.startsWith(".") && !message.startsWith("..") && message.trim() !== "." && message.trim() !== ".c.") {
- let command;
+ if (message.startsWith(".") && !message.startsWith("..") && message.trim() !== "." && message.trim() !== ".c.") {
+ let command;
- try {
- command = message.replaceAll(/ +/g, " ");
- if (command.startsWith(". ")) command = "." + command.substring(2);
- command = command.split(" ")[0].substring(1).replaceAll("/", "-");
- let parameter = message.split(" ").splice(1).join(" ");
+ try {
+ command = message.replaceAll(/ +/g, " ");
+ if (command.startsWith(". ")) command = "." + command.substring(2);
+ command = command.split(" ")[0].substring(1).replaceAll("/", "-");
+ let parameter = message.split(" ").splice(1).join(" ");
- require('./handler')({
- command,
- parameter,
- source: "matrix",
- event,
- room,
- client
- });
- } catch (e) {
- matrixSend(room.roomId, "❓ Hmm, something isn't quite right! I was trying to process your message and something wrong happened. I think you need to report this so it can be fixed!\n\n<details><summary>Show stack trace</summary>\n\n```plaintext\n" + e.stack + "\n```\n\n</details>");
+ require('./handler')({
+ command,
+ parameter,
+ source: "matrix",
+ event,
+ room,
+ client
+ });
+ } catch (e) {
+ matrixSend(room.roomId, "❓ Hmm, something isn't quite right! I was trying to process your message and something wrong happened. I think you need to report this so it can be fixed!\n\n<details><summary>Show stack trace</summary>\n\n```plaintext\n" + e.stack + "\n```\n\n</details>");
+ }
+ } else if (message.includes(require('./credentials.json').username) || (event.event.content.formatted_body && event.event.content.formatted_body.includes(require('./credentials.json').username))) {
+ matrixSend(room.roomId, "👋 Hello! I think you forgot my prefix is `.`, use `.help` to get help.");
+ } else {
+ if (!lastMessages[room.roomId]) lastMessages[room.roomId] = [];
+ lastMessages[room.roomId].unshift(event.event.content.body);
+ lastMessages[room.roomId] = lastMessages[room.roomId].splice(0, 5);
+ }
}
- } else if (message.includes(require('./credentials.json').username) || (event.event.content.formatted_body && event.event.content.formatted_body.includes(require('./credentials.json').username))) {
- matrixSend(room.roomId, "👋 Hello! I think you forgot my prefix is `.`, use `.help` to get help.");
- } else {
- if (!lastMessages[room.roomId]) lastMessages[room.roomId] = [];
- lastMessages[room.roomId].unshift(event.event.content.body);
- lastMessages[room.roomId] = lastMessages[room.roomId].splice(0, 5);
- }
- }
- });
+ });
- client.on("RoomMember.membership", function (event, member) {
- if (member.membership === "invite" && member.userId === require('./credentials.json').username) {
- client.joinRoom(member.roomId).then(function () {
- console.log("Auto-joined %s", member.roomId);
+ client.on("RoomMember.membership", function (event, member) {
+ if (member.membership === "invite" && member.userId === require('./credentials.json').username) {
+ client.joinRoom(member.roomId).then(function () {
+ console.log("Auto-joined %s", member.roomId);
+ });
+ }
});
- }
- });
-})(); \ No newline at end of file
+ })();
+ } catch (e) {
+ setTimeout(() => {
+ startDiscord();
+ }, 300000);
+ }
+}
+
+startMatrix(); \ No newline at end of file