|
@@ -4,18 +4,14 @@ require("module-alias/register");
|
|
import "./environment";
|
|
import "./environment";
|
|
import * as path from "path";
|
|
import * as path from "path";
|
|
import { client } from "./client";
|
|
import { client } from "./client";
|
|
-import { createConnection, getConnectionOptions, getRepository } from "typeorm";
|
|
|
|
-import { formatString, assertOk } from "./util";
|
|
|
|
|
|
+import { createConnection, getConnectionOptions } from "typeorm";
|
|
|
|
+import { assertOk } from "./util";
|
|
import { DB_ENTITIES } from "@shared/db/entities";
|
|
import { DB_ENTITIES } from "@shared/db/entities";
|
|
import { logger } from "./logging";
|
|
import { logger } from "./logging";
|
|
-import { GuildGreeting } from "@shared/db/entity/GuildGreeting";
|
|
|
|
-import { TextChannel, GuildMember, PartialGuildMember } from "discord.js";
|
|
|
|
import { PluginManager } from "./plugin_manager";
|
|
import { PluginManager } from "./plugin_manager";
|
|
|
|
|
|
export const plgMgr: PluginManager = new PluginManager(path.resolve(path.dirname(module.filename), "plugins"));
|
|
export const plgMgr: PluginManager = new PluginManager(path.resolve(path.dirname(module.filename), "plugins"));
|
|
|
|
|
|
-const REACT_PROBABILITY = 0.3;
|
|
|
|
-
|
|
|
|
client.bot.on("ready", async () => {
|
|
client.bot.on("ready", async () => {
|
|
logger.info("Starting up NoctBot");
|
|
logger.info("Starting up NoctBot");
|
|
await client.botUser.setActivity(`@${client.botUser.username} help`, { type: "PLAYING" });
|
|
await client.botUser.setActivity(`@${client.botUser.username} help`, { type: "PLAYING" });
|
|
@@ -33,12 +29,6 @@ client.bot.on("message", async m => {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- if (process.env.FOOLS == "TRUE" && (m.channel.id == "297109482905796608" || m.channel.id == "429295461099110402") && Math.random() <= 0.01) {
|
|
|
|
- const neighs = ["*NEIGH*", "neeeeeigh!", "Gimme carrots!", "NEEEEIIIIGH", "**N E I G H**"];
|
|
|
|
- await m.channel.send(neighs[Math.floor(Math.random() * neighs.length)]);
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
let content = m.cleanContent.trim();
|
|
let content = m.cleanContent.trim();
|
|
|
|
|
|
if (await plgMgr.trigger("message", m, content))
|
|
if (await plgMgr.trigger("message", m, content))
|
|
@@ -64,62 +54,6 @@ client.bot.on("message", async m => {
|
|
await plgMgr.trigger("postMessage", m);
|
|
await plgMgr.trigger("postMessage", m);
|
|
});
|
|
});
|
|
|
|
|
|
-client.bot.on("messageReactionAdd", (r, u) => {
|
|
|
|
- if (Math.random() <= REACT_PROBABILITY && !u.bot) {
|
|
|
|
- logger.verbose(`Reacting to message ${r.message.id} because user ${u.tag} reacted to it`);
|
|
|
|
- r.message.react(r.emoji);
|
|
|
|
- }
|
|
|
|
-});
|
|
|
|
-
|
|
|
|
-async function getGreeting(member: GuildMember | PartialGuildMember) {
|
|
|
|
- const repo = getRepository(GuildGreeting);
|
|
|
|
-
|
|
|
|
- const guildGreeting = await repo.findOne(member.guild.id);
|
|
|
|
- if (!guildGreeting) {
|
|
|
|
- logger.debug("Tried to greet user %s in guild %s but no greeting is defined!", member.id, member.guild.id);
|
|
|
|
- return undefined;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- const greetingChannel = client.bot.channels.resolve(guildGreeting.greetingChannelId);
|
|
|
|
- if (!greetingChannel) {
|
|
|
|
- logger.warning("No channel %s in guild %s, can't greet!", guildGreeting.greetingChannelId, guildGreeting.guildId);
|
|
|
|
- return undefined;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (!(greetingChannel instanceof TextChannel)) {
|
|
|
|
- logger.warning("Channel %s is of not a text channel (got type: %s)", greetingChannel.id, greetingChannel.type);
|
|
|
|
- return undefined;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return { guildGreeting, greetingChannel };
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-client.bot.on("guildMemberAdd", async member => {
|
|
|
|
- const result = await getGreeting(member);
|
|
|
|
- if (!result)
|
|
|
|
- return;
|
|
|
|
- const { guildGreeting, greetingChannel } = result;
|
|
|
|
-
|
|
|
|
- await greetingChannel.send(formatString(guildGreeting.onJoinMessage, {
|
|
|
|
- memberID: member.id,
|
|
|
|
- memberTag: member.user?.tag ?? member.displayName,
|
|
|
|
- guildName: member.guild.name
|
|
|
|
- }));
|
|
|
|
-});
|
|
|
|
-
|
|
|
|
-client.bot.on("guildMemberRemove", async member => {
|
|
|
|
- const result = await getGreeting(member);
|
|
|
|
- if (!result)
|
|
|
|
- return;
|
|
|
|
- const { guildGreeting, greetingChannel } = result;
|
|
|
|
-
|
|
|
|
- await greetingChannel.send(formatString(guildGreeting.onLeaveMessage, {
|
|
|
|
- memberID: member.id,
|
|
|
|
- memberTag: member.user?.tag ?? member.displayName,
|
|
|
|
- guildName: member.guild.name
|
|
|
|
- }));
|
|
|
|
-});
|
|
|
|
-
|
|
|
|
async function main() {
|
|
async function main() {
|
|
await createConnection({
|
|
await createConnection({
|
|
...await getConnectionOptions(),
|
|
...await getConnectionOptions(),
|