aboutsummaryrefslogtreecommitdiff
path: root/src/commands/utilities/suicide.ts
blob: 9289b1c141bea88fa82520cd414dfa55d91371df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import { AllowedMentions, BushCommand, BushMessage, BushSlashMessage } from '@lib';
import { MessageEmbed } from 'discord.js';

export default class TemplateCommand extends BushCommand {
	public constructor() {
		super('suicide', {
			aliases: ['suicide'],
			category: 'utilities',
			description: {
				content: 'Mental Health Resources. Credit to https://github.com/dexbiobot/Zeppelin.',
				usage: 'suicide',
				examples: ['suicide']
			},
			slash: true,
			clientPermissions: (m) => util.clientSendAndPermCheck(m),
			userPermissions: [],
			bypassChannelBlacklist: true
		});
	}

	public override async exec(message: BushMessage | BushSlashMessage): Promise<unknown> {
		// stolen from https://github.com/dexbiobot/Zeppelin
		const suicideEmbed = new MessageEmbed()
			.setTitle('Mental Health Resources')
			.setColor(util.colors.red)
			.setAuthor(
				'Remember, You Matter <3',
				'https://media.discordapp.net/attachments/770256340639416320/854689949193076737/Medical_31-60_974.jpg?width=523&height=523'
			)
			.addField(
				'**National Suicide Prevention Hotline (U.S.):**',
				[
					'**Call:** 1-800-273-8255, available 24/7 for emotional support',
					'**Text: HOME** to 741741',
					'https://suicidepreventionlifeline.org/chat/',
					'',
					'**Outside the U.S**: Find a supportive resource on [this Wikipedia list of worldwide crisis hotlines](https://en.wikipedia.org/wiki/List_of_suicide_crisis_lines)'
				].join('\n')
			)
			.addField(
				'**More Support**',
				[
					'For Substance Abuse Support, Eating Disorder Support & Child Abuse and Domestic Violence:',
					"[Click to go to Discord's Health & Safety Page](https://discord.com/safety/360044103771-Mental-health-on-Discord#h_01EGRGT08QSZ5BNCH2E9HN0NYV)"
				].join('\n')
			);

		return (
			// If the original message was a reply -> imitate it
			(message as BushMessage).reference?.messageId && !message.util.isSlash && message.guild && message.channel
				? await message.channel.messages.fetch((message as BushMessage).reference!.messageId!).then(async (message1) => {
						await message1.reply({ embeds: [suicideEmbed], allowedMentions: AllowedMentions.users(), target: message1 });
				  })
				: await message.util.send({ embeds: [suicideEmbed], allowedMentions: AllowedMentions.users() })
		);
	}
}