aboutsummaryrefslogtreecommitdiff
path: root/src/commands/utilities/suicide.ts
blob: f0d75a2f8aa2fa8bf8b995c0d51bc8a873cd99eb (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
58
59
60
import { AllowedMentions, BushCommand, type BushMessage, type BushSlashMessage } from '#lib';
import { MessageEmbed, type Message } from 'discord.js';

export default class TemplateCommand extends BushCommand {
	public constructor() {
		super('suicide', {
			aliases: ['suicide'],
			category: 'utilities',
			description: '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) {
		// stolen from https://github.com/dexbiobot/Zeppelin
		const suicideEmbed = new MessageEmbed()
			.setTitle('Mental Health Resources')
			.setColor(util.colors.red)
			.setAuthor({
				name: 'Remember, You Matter <3',
				iconURL:
					'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.util.isSlashMessage(message) && (message as Message).reference?.messageId && message.guild && message.channel
				? await message.channel.messages.fetch((message as Message).reference!.messageId!).then(async (message1) => {
						await message1.reply({
							embeds: [suicideEmbed],
							allowedMentions: AllowedMentions.users(),
							target: message1
						});
				  })
				: await message.util.send({ embeds: [suicideEmbed], allowedMentions: AllowedMentions.users() })
		);
	}
}