const sdk = require("matrix-js-sdk"); const matrixcs = require("matrix-js-sdk/lib/matrix"); const request = require('request'); matrixcs.request(request); const startupTime = Date.now(); // --------- The following settings are all required: ---------------------- // Provide a matrix ID, access token, and homeserver that the bot will use. const myUserId = "@glowy:glowers.club" const myAccessToken = "syt_TotallyMyRealAccessTokenAndNotAFake"; const homeserver = "https://glowers.club"; // Provide the link to SearXNG. Include any directories used in a search query. const searxng_server = "https://searxng.example.com/searxng" // -------------------------------------------------------------------------- const matrixClient = sdk.createClient({ baseUrl: homeserver, accessToken: myAccessToken, userId: myUserId }); const Searx = require('./index.js'); const searx = new Searx(matrixClient) searx.setSearxInstance(searxng_server); // --------- The following settings are all optional: ---------------------- // This allows you to use a different Matrix user and homeserver for uploading the image results. If this is not provided then the bot's Matrix ID and homeserver will be used instead. /* const uploadMatrixClient = sdk.createClient({ baseUrl: "https://midov.pl", accessToken: "syt_AnotherRealAccessTokenDoNotCommit", userId: "@upload_leech:midov.pl" }); searx.setUploadMatrixClient(uploadMatrixClient); */ // Set which rooms are not allowed to search for images. //searx.setBlacklistedImgRooms(["!wehateimagesearching:matrix.org", "!wehateittoo:nerdsin.space"]); // Set which rooms are not allowed to search for images with safesearch disabled. //searx.setBlacklistedUimgRooms(["!sfw:matrix.org", "!church:nerdsin.space"]); // Set the amount of time in milliseconds users in a room are required to wait between searches (and allow some users to be immune to the cooldown and send as many as they want) /* searx.setCooldownImmuneUsers(["@q:glowers.club", "@romanticusgondolaticus:glowers.club"]); searx.setRoomCooldowns(new Map([ ["!sCbWouzHiLEyfOAaSJ:midov.pl",30000] ])); */ // Lets you set which URL parameters are used in SearXNG queries. Useful for changing which search engines are included and excluded. See SearXNG's documentation for all of the parameters available. //searx.setSearxParameters("disabled_engines=flickr__images"); // Lets you add a whitelist for a room. When added, only the users in that whitelist will be able to search. Other users will receive an error. /* searxng.setRoomUserWhitelists(new Map([ ["!blahblahblah:midov.pl", [ "@q:glowers.club", "@romanticusgondolaticus:glowers.club" ] ] ])); */ // -------------------------------------------------------------------------- matrixClient.on("Room.timeline", function(event, room, toStartOfTimeline) { if (event.getTs() >= startupTime && event.getType() == "m.room.message" && event.getContent().body != null) { if (event.getContent().body.indexOf("!help") == 0) { const helpMessage = "Commands:\n"+searx.getHelp(); const formattedHelpMessage = "Commands:
"+searx.getFormattedHelp(); const content = { "format": "org.matrix.custom.html", "body": helpMessage, "formatted_body": formattedHelpMessage, "msgtype": "m.text" }; matrixClient.sendEvent(room.roomId, "m.room.message", content, "", (err, res) => { if (err != null) { console.error(err); } }); return; } searx.handleMessage(event, room); } }); searx.startUploadMatrixClient(); matrixClient.startClient();