Skip to content

Commit 1104605

Browse files
committed
stricter ts + small changes
1 parent 610c8cc commit 1104605

File tree

17 files changed

+57
-173
lines changed

17 files changed

+57
-173
lines changed

example.env

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1-
# Client ID
2-
clientId =
1+
# Discord Bot Client ID
2+
# https://wdh.gg/IN3s8wp
3+
CLIENT_ID =
34

45
# MongoDB URI
5-
database =
6+
# https://wdh.gg/Fsx57qA
7+
MONGO_URI =
68

79
# Sentry DSN
8-
sentry_dsn =
10+
# https://wdh.gg/Du4qqZr
11+
SENTRY_DSN =
912

10-
# Bot Token
11-
token =
13+
# Discord Bot Token
14+
# https://wdh.gg/Xik9n40
15+
TOKEN =

src/classes/Command.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ export default class Command {
44
public name: string;
55
public description: string;
66
public options: ApplicationCommandOptionData[];
7-
public default_member_permissions: Permissions;
7+
public default_member_permissions: Permissions | null;
88
public botPermissions: PermissionResolvable[];
99
public cooldown: number;
1010
public enabled: boolean;

src/commands/info/bot.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ const command: Command = {
1818
try {
1919
const info = new Discord.EmbedBuilder()
2020
.setColor(client.config.embeds.default)
21-
.setAuthor({ name: client.user.tag, iconURL: client.user.displayAvatarURL({ extension: "png", forceStatic: false }), url: `https://discord.com/users/${client.user.id}` })
21+
.setAuthor({ name: client.user?.tag, iconURL: client.user?.displayAvatarURL({ extension: "png", forceStatic: false }), url: `https://discord.com/users/${client.user?.id}` })
2222
.setDescription(bot.description)
2323
.addFields (
2424
{ name: "📈 Version", value: bot.version, inline: true },
25-
{ name: "🟢 Online Since", value: `<t:${(Date.now() - client.uptime).toString().slice(0, -3)}:f>`, inline: true },
25+
{ name: "🟢 Online Since", value: `<t:${(Date.now() - client?.uptime).toString().slice(0, -3)}:f>`, inline: true },
2626
{ name: "📊 Guild Count", value: `${client.guilds.cache.size}`, inline: true }
2727
)
2828

src/commands/info/help.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ const command: Command = {
8282

8383
const help = new Discord.EmbedBuilder()
8484
.setColor(client.config.embeds.default)
85-
.setThumbnail(client.user.displayAvatarURL({ extension: "png", forceStatic: false }))
85+
.setThumbnail(client.user?.displayAvatarURL({ extension: "png", forceStatic: false }))
8686
.setTitle("Commands")
8787
.setDescription(cmds.sort().join("\n"))
8888
.setTimestamp()

src/commands/reminders/cancel.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const command: Command = {
2828
ephemeral: true,
2929
async execute(interaction: ChatInputCommandInteraction, client: ExtendedClient, Discord: typeof import("discord.js")) {
3030
try {
31-
const id = interaction.options.get("id").value as string;
31+
const id = interaction.options.get("id")?.value as string;
3232

3333
const reminder = await Reminder.findOne({ reminder_id: id, user: interaction.user.id });
3434

@@ -66,7 +66,7 @@ const command: Command = {
6666
const reminders = await Reminder.find({ user: interaction.user.id });
6767

6868
// Filter reminders
69-
const filteredReminders = reminders.filter((reminder) => reminder.reminder_id.startsWith(option.value));
69+
const filteredReminders = reminders.filter((reminder) => reminder.reminder_id?.startsWith(option.value));
7070

7171
// Map reminders
7272
const choices = filteredReminders.map((reminder) => {

src/commands/reminders/info.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const command: Command = {
2828
ephemeral: true,
2929
async execute(interaction: ChatInputCommandInteraction, client: ExtendedClient, Discord: typeof import("discord.js")) {
3030
try {
31-
const id = interaction.options.get("id").value as string;
31+
const id = interaction.options.get("id")?.value as string;
3232

3333
const reminder = await Reminder.findOne({ reminder_id: id, user: interaction.user.id });
3434

@@ -45,9 +45,9 @@ const command: Command = {
4545
.setColor(client.config.embeds.default)
4646
.setTitle(reminder.reminder_id)
4747
.addFields(
48-
{ name: "Reason", value: reminder.reason },
49-
{ name: "Set", value: `<t:${reminder.set.toString().slice(0, -3)}:f>`, inline: true },
50-
{ name: "Due", value: `<t:${reminder.due.toString().slice(0, -3)}:R>`, inline: true }
48+
{ name: "Reason", value: reminder?.reason },
49+
{ name: "Set", value: `<t:${reminder.set?.toString().slice(0, -3)}:f>`, inline: true },
50+
{ name: "Due", value: `<t:${reminder.due?.toString().slice(0, -3)}:R>`, inline: true }
5151
)
5252

5353
await interaction.editReply({ embeds: [info] });
@@ -63,7 +63,7 @@ const command: Command = {
6363
const reminders = await Reminder.find({ user: interaction.user.id });
6464

6565
// Filter reminders
66-
const filteredReminders = reminders.filter((reminder) => reminder.reminder_id.startsWith(option.value));
66+
const filteredReminders = reminders.filter((reminder) => reminder.reminder_id?.startsWith(option.value));
6767

6868
// Map reminders
6969
const choices = filteredReminders.map((reminder) => {

src/commands/reminders/reminders.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ const command: Command = {
4545
const list = new Discord.EmbedBuilder()
4646
.setColor(client.config.embeds.default)
4747
.setTitle("Your Reminders")
48-
.setDescription(cap(reminders.map(r => `\`${r.reminder_id}\` (<t:${r.due.toString().slice(0, -3)}:R>):\n*${!fullReasons ? cap(r.reason, 100): r.reason}*`).join("\n"), 4000))
48+
.setDescription(cap(reminders.map(r => `\`${r.reminder_id}\` (<t:${r.due?.toString().slice(0, -3)}:R>):\n*${!fullReasons ? cap(r.reason, 100): r.reason}*`).join("\n"), 4000))
4949

5050
await interaction.editReply({ embeds: [list] });
5151
} catch(err) {

src/commands/reminders/remindme.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ const command: Command = {
4343
ephemeral: true,
4444
async execute(interaction: ChatInputCommandInteraction, client: ExtendedClient, Discord: typeof import("discord.js")) {
4545
try {
46-
let time: number | string = interaction.options.get("time").value as string;
47-
const reason = interaction.options.get("reason").value as string;
46+
let time: number | string = interaction.options.get("time")?.value as string;
47+
const reason = interaction.options.get("reason")?.value as string;
4848
const sendInChannel = interaction.options.get("send_in_channel")?.value || false as boolean;
4949

5050
const reminders = await Reminder.find({ user: interaction.user.id });
@@ -103,7 +103,7 @@ const command: Command = {
103103
const reminder = await new Reminder({
104104
reminder_id: id,
105105
user: interaction.user.id,
106-
channel: interaction.channel.id ? interaction.channel.id : null,
106+
channel: interaction.channel?.id ? interaction.channel?.id : null,
107107
set: Date.now(),
108108
due: Date.now() + time,
109109
delay: time,
@@ -121,15 +121,15 @@ const command: Command = {
121121
.setTitle("Reminder")
122122
.setDescription(reason)
123123
.addFields (
124-
{ name: "Set", value: `<t:${reminder.set.toString().slice(0, -3)}:f> (<t:${reminder.set.toString().slice(0, -3)}:R>)` }
124+
{ name: "Set", value: `<t:${reminder.set?.toString().slice(0, -3)}:f> (<t:${reminder.set?.toString().slice(0, -3)}:R>)` }
125125
)
126126
.setFooter({ text: `ID: ${reminder.reminder_id}` })
127127
.setTimestamp()
128128

129129

130-
if(sendInChannel && interaction.channel.id) {
130+
if(sendInChannel && interaction.channel?.id) {
131131
try {
132-
const channel = client.channels.cache.get(interaction.channel.id) as TextChannel;
132+
const channel = client.channels.cache.get(interaction.channel?.id) as TextChannel;
133133

134134
if(!channel) throw "Channel not found.";
135135

@@ -143,7 +143,7 @@ const command: Command = {
143143
try {
144144
await interaction.user.send({ embeds: [embed] });
145145
} catch {
146-
const channel = client.channels.cache.get(interaction.channel.id) as TextChannel;
146+
const channel = client.channels.cache.get(interaction.channel?.id) as TextChannel;
147147

148148
if(!channel) return;
149149

@@ -155,7 +155,7 @@ const command: Command = {
155155

156156
const reminderSet = new Discord.EmbedBuilder()
157157
.setColor(client.config.embeds.default)
158-
.setDescription(`${emoji.tick} Your reminder has been set for <t:${reminder.due.toString().slice(0, -3)}:f> with ID \`${reminder.reminder_id}\`!`)
158+
.setDescription(`${emoji.tick} Your reminder has been set for <t:${reminder.due?.toString().slice(0, -3)}:f> with ID \`${reminder.reminder_id}\`!`)
159159

160160
await interaction.editReply({ embeds: [reminderSet] });
161161
} catch(err) {

src/events/client/ready.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@ const event: Event = {
1313
async execute(client: ExtendedClient) {
1414
try {
1515
// Login Message
16-
console.log(`Logged in as: ${client.user.tag}`);
16+
console.log(`Logged in as: ${client.user?.tag}`);
1717

1818
// Register Commands
1919
await globalCommands(client);
2020

2121
// Manage timeouts
2222
async function manageExistingTimeouts() {
2323
let reminders = await Reminder.find({});
24-
const dueReminders = reminders.filter(reminder => reminder.due <= Date.now().toString());
24+
const dueReminders = reminders.filter(reminder => reminder?.due <= Date.now().toString());
2525

2626
for(const reminder of dueReminders) {
2727
await reminder.deleteOne();
@@ -30,10 +30,10 @@ const event: Event = {
3030
const embed = new Discord.EmbedBuilder()
3131
.setColor(client.config.embeds.default)
3232
.setTitle("Overdue Reminder")
33-
.setDescription(reminder.reason)
33+
.setDescription(reminder?.reason)
3434
.addFields (
35-
{ name: "Set", value: `<t:${reminder.set.toString().slice(0, -3)}:f>`, inline: true },
36-
{ name: "Overdue Since", value: `<t:${reminder.due.toString().slice(0, -3)}:R>`, inline: true }
35+
{ name: "Set", value: `<t:${reminder.set?.toString().slice(0, -3)}:f>`, inline: true },
36+
{ name: "Overdue Since", value: `<t:${reminder.due?.toString().slice(0, -3)}:R>`, inline: true }
3737
)
3838
.setFooter({ text: `ID: ${reminder.reminder_id}` })
3939
.setTimestamp()
@@ -49,14 +49,14 @@ const event: Event = {
4949
try {
5050
const user = client.users.cache.get(reminder.user);
5151

52-
await user.send({ embeds: [embed] });
52+
await user?.send({ embeds: [embed] });
5353
} catch {}
5454
}
5555
} else {
5656
try {
5757
const user = client.users.cache.get(reminder.user);
5858

59-
await user.send({ embeds: [embed] });
59+
await user?.send({ embeds: [embed] });
6060
} catch {
6161
try {
6262
const channel = client.channels.cache.get(reminder?.channel) as Discord.TextChannel;

src/events/guild/interactionCreate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const event: Event = {
1515
// Ignore interactions not in a guild
1616
if(!interaction.guild || !interaction.guild?.id) return;
1717
// Ignore interactions if the bot does not have the required permissions
18-
if(!interaction.guild?.members.me.permissions.has(requiredPerms)) return;
18+
if(!interaction.guild?.members.me?.permissions.has(requiredPerms)) return;
1919

2020
// Autocomplete handler
2121
if(interaction.isAutocomplete()) return await autocompleteHandler(client, interaction);

0 commit comments

Comments
 (0)