parent
c41b19858e
commit
3b69d4fb6b
@ -0,0 +1,60 @@ |
|||||||
|
const Discord = require('discord.js'); |
||||||
|
|
||||||
|
const TD = require('../../models/todo'); |
||||||
|
|
||||||
|
const ask = require('../../util/ask'); |
||||||
|
|
||||||
|
module.exports = { |
||||||
|
name: "todo", |
||||||
|
aliases: ['td'], |
||||||
|
meta: { |
||||||
|
category: 'Utility', |
||||||
|
description: "Create and manage your To-Do lists!", |
||||||
|
syntax: '`todo <add|list|delete|edit|view|complete|uncomplete>`', |
||||||
|
extra: null |
||||||
|
}, |
||||||
|
help: new Discord.MessageEmbed() |
||||||
|
.setTitle("Help -> To-Do Lists") |
||||||
|
.setDescription("Create and manage your To-Do lists. You can use the commands like `add` or `view` without specifying a list to see your `quick` list, which is just quick random stuff. Otherwise, you can specify a list name first to manage it.") |
||||||
|
.addField("Syntax", "`todo <add|list|delete|edit|view|complete|uncomplete>`"), |
||||||
|
async execute(message, msg, args, cmd, prefix, mention, client) { |
||||||
|
if (!args.length) {return message.channel.send(`Syntax: \`${prefix}todo <add|list|delete|edit|view|complete|uncomplete>\``);} |
||||||
|
|
||||||
|
if (['add', 'a'].includes(args[0].toLowerCase())) { |
||||||
|
let list = 'quick'; |
||||||
|
let td = await TD.findOne({uid: message.author.id}); |
||||||
|
if (td && td.lists.quick.length > 20) {return message.channel.send("Sorry, but your list can only have 20 items or less.");} |
||||||
|
let item; |
||||||
|
if (!args[1]) {item = await ask(message, "What would you like to your quick list?", 90000); if (!item) {return;}} |
||||||
|
else {args.shift(); item = args.join(" ");} |
||||||
|
if (item.length > 100) {return message.channel.send("ToDo items can only be less than 100 characters.");} |
||||||
|
td = td || new TD({uid: message.author.id}); |
||||||
|
td.lists.quick.push(item); |
||||||
|
td.markModified(`lists.${list}`); |
||||||
|
td.save(); |
||||||
|
return message.channel.send(new Discord.MessageEmbed() |
||||||
|
.setAuthor("To-Do Added!", message.author.avatarURL()) |
||||||
|
.setDescription(`${item}\n\`->\` In list '${list}'`) |
||||||
|
.setColor('c375f0') |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
else if (['v', 'view'].includes(args[0].toLowerCase())) { |
||||||
|
let list = 'quick'; |
||||||
|
let td = await TD.findOne({uid: message.author.id}); |
||||||
|
if (!td) {return message.channel.send("You don't have any todo lists!");} |
||||||
|
if (!td.lists[list]) {return message.channel.send("That list doesn't exist!");} |
||||||
|
if (!td.lists[list].length) {return message.channel.send("That list is empty!");} |
||||||
|
let s = ''; |
||||||
|
let n = 0; let i; for (i of td.lists[list]) {n++; s += `**${n}.** ${i}\n`;} |
||||||
|
return message.channel.send(new Discord.MessageEmbed() |
||||||
|
.setAuthor(message.guild ? message.member.displayName : message.author.username, message.author.avatarURL()) |
||||||
|
.setTitle(list === "quick" ? "Personal Quick List" : `List "${list}"`) |
||||||
|
.setDescription(s) |
||||||
|
.setColor("c375f0") |
||||||
|
.setFooter("Natsuki") |
||||||
|
.setTimestamp() |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
@ -0,0 +1,9 @@ |
|||||||
|
const mongoose = require('mongoose'); |
||||||
|
|
||||||
|
const td = new mongoose.Schema({ |
||||||
|
uid: {type: String, unique: true}, |
||||||
|
lists: {type: Object, default: {quick: []}}, |
||||||
|
publicLists: {type: Object, default: {}} |
||||||
|
}); |
||||||
|
|
||||||
|
module.exports = mongoose.model('todo', td); |
Loading…
Reference in new issue