initial commit
This commit is contained in:
commit
eaec14f4fb
14 changed files with 1987 additions and 0 deletions
92
modules/fedimbed.js
Normal file
92
modules/fedimbed.js
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
import fedimbed from "../lib/fedimbed.js";
|
||||
import { encode } from "html-entities";
|
||||
import { JSDOM } from "jsdom";
|
||||
import util from "util";
|
||||
|
||||
async function onMessage(client, event) {
|
||||
const embed = await fedimbed(event.event.content.body);
|
||||
if(!embed) return;
|
||||
const dom = new JSDOM("<!DOCTYPE html><body></body>");
|
||||
const document = dom.window.document;
|
||||
var quote = document.createElement("blockquote");
|
||||
if(!embed.embeds) {
|
||||
var c = util.format(embed);
|
||||
client.reply(event, c, `<pre><code>${encode(c)}</code></pre>`);
|
||||
return;
|
||||
}
|
||||
for(const emb of embed.embeds) {
|
||||
var link = document.createElement("a");
|
||||
link.href = emb.url;
|
||||
|
||||
if(emb.thumbnail && emb.thumbnail.url) {
|
||||
var avatar = document.createElement("img");
|
||||
var matrixUrl = client.cache.get("fedimbed_" + emb.thumbnail.url);
|
||||
if(!matrixUrl) {
|
||||
const buffer = await fetch(emb.thumbnail.url, {
|
||||
headers: {
|
||||
"User-Agent": "PossumBot/1.0 (+https://bot.possum.city/)",
|
||||
},
|
||||
}).then((res) => res.arrayBuffer()).then((buf) => Buffer.from(buf));
|
||||
const uploadResponse = await client.uploadContent(buffer, { rawResponse: false });
|
||||
matrixUrl = uploadResponse.content_uri;
|
||||
client.cache.set("fedimbed_" + emb.thumbnail.url, matrixUrl);
|
||||
}
|
||||
avatar.src = matrixUrl;
|
||||
avatar.height = "16";
|
||||
link.appendChild(avatar);
|
||||
}
|
||||
|
||||
var linkText = document.createElement("span");
|
||||
linkText.innerHTML = ((emb.thumbnail?.url) ? " " : "") + emb.title;
|
||||
link.appendChild(linkText);
|
||||
|
||||
quote.appendChild(link);
|
||||
|
||||
var text = document.createElement("p");
|
||||
text.innerHTML = emb.description;
|
||||
quote.appendChild(text);
|
||||
}
|
||||
for(const file of embed.files) {
|
||||
var matrixUrl = client.cache.get("fedimbed_" + file.url);
|
||||
if(!matrixUrl) {
|
||||
const buffer = await fetch(file.url, {
|
||||
headers: {
|
||||
"User-Agent": "PossumBot/1.0 (+https://bot.possum.city/)",
|
||||
},
|
||||
}).then((res) => res.arrayBuffer()).then((buf) => Buffer.from(buf));
|
||||
const uploadResponse = await client.uploadContent(buffer, { rawResponse: false });
|
||||
matrixUrl = uploadResponse.content_uri;
|
||||
client.cache.set("fedimbed_" + file.url, matrixUrl);
|
||||
}
|
||||
var media;
|
||||
switch(file.type.split("/")[0]) {
|
||||
case "audio":
|
||||
media = document.createElement("audio");
|
||||
break;
|
||||
case "video":
|
||||
media = document.createElement("video");
|
||||
break;
|
||||
case "image":
|
||||
media = document.createElement("img");
|
||||
break;
|
||||
}
|
||||
media.src = matrixUrl;
|
||||
media.alt = file.desc;
|
||||
quote.appendChild(media);
|
||||
}
|
||||
document.body.appendChild(quote);
|
||||
|
||||
let x = document.createElement("small");
|
||||
x.innerHTML = "Powered by <a href=\"https://gitdab.com/Cynosphere/HiddenPhox/src/branch/rewrite/src/modules/fedimbed.js\">HF Fedimbed</a>";
|
||||
document.body.appendChild(x);
|
||||
|
||||
client.reply(event, "This message uses HTML, which your client does not support.", document.body.outerHTML);
|
||||
}
|
||||
|
||||
export default {
|
||||
name: "fedimbed",
|
||||
desc: "embed fediverse post contents",
|
||||
hooks: {
|
||||
message: onMessage
|
||||
}
|
||||
}
|
||||
45
modules/meow.js
Normal file
45
modules/meow.js
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
var meows = [
|
||||
"mreow",
|
||||
"miau",
|
||||
"mewo",
|
||||
"maow",
|
||||
"mrow",
|
||||
"mrao",
|
||||
"meow",
|
||||
"mew",
|
||||
"nya",
|
||||
];
|
||||
|
||||
var emoticons = [
|
||||
":3",
|
||||
"^w^",
|
||||
"=^w^=",
|
||||
"-w-",
|
||||
":333"
|
||||
];
|
||||
|
||||
async function onMessage(client, event) {
|
||||
if(event.event.content["m.new_content"] != null) return;
|
||||
|
||||
for(const meow of meows) {
|
||||
if(event.event.content.body.toLowerCase().includes(meow)) {
|
||||
var reply = meows.random();
|
||||
reply += "!".repeat(Math.random()*5)
|
||||
|
||||
if(Math.random() > 0.5) {
|
||||
reply += " " + emoticons.random();
|
||||
}
|
||||
|
||||
client.reply(event, reply);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
name: "meow",
|
||||
desc: ":33",
|
||||
hooks: {
|
||||
message: onMessage
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue