initial commit
This commit is contained in:
40
events/handle-react-image.ts
Normal file
40
events/handle-react-image.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import discord from 'discord.js';
|
||||
import {HydratedDocument} from 'mongoose';
|
||||
|
||||
import {logger} from '../logger';
|
||||
import {config} from '../config';
|
||||
import {reactPreprocess} from '../functions/react-preprocess';
|
||||
import {Alias, aliasModel} from '../models/Alias';
|
||||
import {Guild, guildModel} from '../models/Guild';
|
||||
import {Image, imageModel} from '../models/Image';
|
||||
|
||||
export async function handleReactImage(message: discord.Message): Promise<void>{
|
||||
try{
|
||||
if(!message.guild || !message.guild.id || !message.content) return;
|
||||
const guild: HydratedDocument<Guild> | null =
|
||||
await guildModel.findOne({id: message.guild.id});
|
||||
if(!guild) return; // not in guild
|
||||
const alias: HydratedDocument<Alias> | null =
|
||||
await aliasModel.findOne(
|
||||
{guild: guild, text: reactPreprocess(message.content)}
|
||||
);
|
||||
if(!alias) return; // alias not exist
|
||||
if(!alias.images.length) return; // alias not linked
|
||||
|
||||
const chosenImage: Image =
|
||||
alias.images[Math.floor(Math.random() * alias.images.length)];
|
||||
const image: HydratedDocument<Image> | null =
|
||||
await imageModel.findById(chosenImage._id);
|
||||
if(!image)
|
||||
throw Error('image not exist');
|
||||
|
||||
await message.channel.send({
|
||||
content: `${config.httpServer.external.url}/${image._id}${image.extension}`
|
||||
});
|
||||
}catch(err: unknown){
|
||||
let errMsg;
|
||||
if(err instanceof Error) errMsg = err.message;
|
||||
else errMsg = String(errMsg);
|
||||
logger.error(`While executing "handleReactImage", ${errMsg}`);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user