diff --git a/model/command/add-friend.js b/model/command/add-friend.js new file mode 100644 index 0000000..e59f190 --- /dev/null +++ b/model/command/add-friend.js @@ -0,0 +1,40 @@ +const { MessageEmbed } = require('discord.js'); +const CommandCategory = require('../command-category'); +const CommandPermission = require('../command-permission'); + +class AddFriend +{ + static instance = null; + + constructor() { + if (AddFriend.instance !== null) { + return AddFriend.instance; + } + + this.aliases = ['add-friends', 'addfriends', 'addfriend', 'af']; + this.category = CommandCategory.RESOURCE; + this.isAllowedForContext = CommandPermission.yes; + this.description = 'Explains how to troubleshoot not being able to add a friend.'; + } + + /** + * @param {Message} message + * @param {Array} args + */ + async process(message, args) { + const embed = new MessageEmbed(); + + embed.setColor(APP_MAIN_COLOUR); + embed.setAuthor('Add friend', bot.user.displayAvatarURL({ dynamic: true })); + embed.setDescription( + 'If you and your friends are unable to add each other as friends, or can\'t find each other as friends, ' + + 'make sure that you are using a case sensitive username when adding each other. Additionally, it is ' + + 'currently not possible to add people by their user ID, so if you are using a user id to add them as ' + + 'friend this currently does not work but will in the future.' + ); + + return message.channel.send(embed); + } +} + +module.exports = new AddFriend(); diff --git a/model/command/add-set-front.js b/model/command/add-set-front.js new file mode 100644 index 0000000..02a95d1 --- /dev/null +++ b/model/command/add-set-front.js @@ -0,0 +1,52 @@ +const { MessageEmbed } = require('discord.js'); +const CommandCategory = require('../command-category'); +const CommandPermission = require('../command-permission'); + +class AddSetFront +{ + static instance = null; + + constructor() { + if (AddSetFront.instance !== null) { + return AddSetFront.instance; + } + + this.aliases = [ + 'addsetfront', + 'addset-front', + 'add-setfront', + 'add-set', + 'addset', + 'add-front', + 'addfront', + 'set-front', + 'setfront', + 'asf', + ]; + this.category = CommandCategory.RESOURCE; + this.isAllowedForContext = CommandPermission.yes; + this.description = 'Talks about how to set who is fronting in the application.'; + } + + /** + * @param {Message} message + * @param {Array} args + */ + async process(message, args) { + const embed = new MessageEmbed(); + + embed.setColor(APP_MAIN_COLOUR); + embed.setAuthor('Add / set front', bot.user.displayAvatarURL({ dynamic: true })); + embed.setDescription( + 'There are two ways in-app to show a member as fronting. Set as front, and add to front.\n' + + '\n' + + 'Using set as front will clear all members from your front list, and then add that member. Add to front ' + + 'won\'t remove anyone from the list, but it will add the member whose add icon you tapped. You can ' + + 'individually remove members by tapping the downward facing arrow next to their name.' + ); + + return message.channel.send(embed); + } +} + +module.exports = new AddSetFront(); diff --git a/model/command/messaging.js b/model/command/messaging.js new file mode 100644 index 0000000..f665b5a --- /dev/null +++ b/model/command/messaging.js @@ -0,0 +1,43 @@ +const { MessageEmbed } = require('discord.js'); +const CommandCategory = require('../command-category'); +const CommandPermission = require('../command-permission'); + +class Messaging +{ + static instance = null; + + constructor() { + if (Messaging.instance !== null) { + return Messaging.instance; + } + + this.aliases = []; + this.category = CommandCategory.RESOURCE; + this.isAllowedForContext = CommandPermission.yes; + this.description = 'Talks about the possibility of having a messaging feature.'; + } + + /** + * @param {Message} message + * @param {Array} args + */ + async process(message, args) { + const embed = new MessageEmbed(); + + embed.setColor(APP_MAIN_COLOUR); + embed.setAuthor('Messaging', bot.user.displayAvatarURL({ dynamic: true })); + embed.setDescription( + 'The feature of messaging other systems within the app is out of scope, the app is not meant to be a ' + + 'social community app but a tool for you and your friends. Adding messages between systems would need ' + + 'us to implement moderation tools, moderation team and the actual feature, which is not the direction ' + + 'we are taking the app in right now.\n' + + '\n' + + 'Messaging within the system, between headmates, is planned for the future so you can communicate more ' + + 'easily within the system.' + ); + + return message.channel.send(embed); + } +} + +module.exports = new Messaging(); diff --git a/model/command/notifications.js b/model/command/notifications.js new file mode 100644 index 0000000..d5e91e3 --- /dev/null +++ b/model/command/notifications.js @@ -0,0 +1,40 @@ +const { MessageEmbed } = require('discord.js'); +const CommandCategory = require('../command-category'); +const CommandPermission = require('../command-permission'); + +class Notifications +{ + static instance = null; + + constructor() { + if (Notifications.instance !== null) { + return Notifications.instance; + } + + this.aliases = ['notification']; + this.category = CommandCategory.RESOURCE; + this.isAllowedForContext = CommandPermission.yes; + this.description = 'Explains how your friends can get notifications from your system.'; + } + + /** + * @param {Message} message + * @param {Array} args + */ + async process(message, args) { + const embed = new MessageEmbed(); + + embed.setColor(APP_MAIN_COLOUR); + embed.setAuthor('Notifications', bot.user.displayAvatarURL({ dynamic: true })); + embed.setDescription( + 'If your friends are not getting notifications, make sure that you go into the settings of the friend ' + + 'by going on their profile and clicking the cog wheel on the right top. Press "They can get ' + + 'notifications". As a second step your friend(s) have to opt-in to get notifications from you, they ' + + 'have to go to your profile in their friends and click "Get notifications if they change front".' + ); + + return message.channel.send(embed); + } +} + +module.exports = new Notifications(); diff --git a/model/command/see-members.js b/model/command/see-members.js new file mode 100644 index 0000000..8a9d5af --- /dev/null +++ b/model/command/see-members.js @@ -0,0 +1,39 @@ +const { MessageEmbed } = require('discord.js'); +const CommandCategory = require('../command-category'); +const CommandPermission = require('../command-permission'); + +class SeeMembers +{ + static instance = null; + + constructor() { + if (SeeMembers.instance !== null) { + return SeeMembers.instance; + } + + this.aliases = ['see-members', 'seemembers', 'seemember', 'sm']; + this.category = CommandCategory.RESOURCE; + this.isAllowedForContext = CommandPermission.yes; + this.description = 'Explains how to allow your friends to see your members.'; + } + + /** + * @param {Message} message + * @param {Array} args + */ + async process(message, args) { + const embed = new MessageEmbed(); + + embed.setColor(APP_MAIN_COLOUR); + embed.setAuthor('See members', bot.user.displayAvatarURL({ dynamic: true })); + embed.setDescription( + 'If your friends cannot see your members, you have to go into the friend their profile, click on the ' + + 'cogwheel on the right top and press "They can see your shared members", this will allow them to see ' + + 'your public members' + ); + + return message.channel.send(embed); + } +} + +module.exports = new SeeMembers(); diff --git a/model/command/sync-members-pluralkit.js b/model/command/sync-members-pluralkit.js new file mode 100644 index 0000000..fbc63cc --- /dev/null +++ b/model/command/sync-members-pluralkit.js @@ -0,0 +1,73 @@ +const { MessageEmbed } = require('discord.js'); +const CommandCategory = require('../command-category'); +const CommandPermission = require('../command-permission'); + +class SyncMembersPluralkit +{ + static instance = null; + + constructor() { + if (SyncMembersPluralkit.instance !== null) { + return SyncMembersPluralkit.instance; + } + + this.aliases = [ + 'sync-member-pluralkit', + 'syncmemberpluralkit', + 'syncmember-pluralkit', + 'sync-memberpluralkit', + 'syncmemberspluralkit', + 'syncmembers-pluralkit', + 'sync-memberspluralkit', + 'sync-member-plural-kit', + 'syncmemberplural-kit', + 'syncmember-plural-kit', + 'sync-memberplural-kit', + 'syncmembersplural-kit', + 'syncmembers-plural-kit', + 'sync-membersplural-kit', + 'sync-member', + 'syncmember', + 'sync-members', + 'syncmembers', + 'sync-pluralkit', + 'syncpluralkit', + 'sync-plural-kit', + 'syncplural-kit', + 'smp', + 'smpk', + ]; + this.category = CommandCategory.RESOURCE; + this.isAllowedForContext = CommandPermission.yes; + this.description = 'Talks about syncing your members to PluralKit.'; + } + + /** + * @param {Message} message + * @param {Array} args + */ + async process(message, args) { + const embed = new MessageEmbed(); + + embed.setColor(APP_MAIN_COLOUR); + embed.setAuthor('Sync members to PluralKit', bot.user.displayAvatarURL({ dynamic: true })); + embed.setDescription( + 'If you wish to sync your members to PluralKit, go into the settings page -> Integrations -> PluralKit ' + + 'and fill in your PluralKit token, you can get this token by typing pk;token anywhere and PluralKit ' + + 'will message you the token in a DM. \n' + + '\n' + + 'Once filled out, you can go to actions in the members page and press Sync (rebooting app may be ' + + 'required to see this option after adding the token). You will be prompted with the option to sync to ' + + 'and from pk. \n' + + '\n' + + 'Pay attention that they are linked by the plural kit id found in the individual member settings in ' + + 'Simply Plural. If you make a member on Simply Plural and you make the same member on PluralKit you ' + + 'will have to go into the individual member settings of Simply Plural and fill in the PluralKit user id ' + + 'in the settings. If you don\'t do this you will end up with duplicate members on Plural Kit.' + ); + + return message.channel.send(embed); + } +} + +module.exports = new SyncMembersPluralkit(); diff --git a/model/command/website.js b/model/command/website.js new file mode 100644 index 0000000..2d109bd --- /dev/null +++ b/model/command/website.js @@ -0,0 +1,40 @@ +const { MessageEmbed } = require('discord.js'); +const CommandCategory = require('../command-category'); +const CommandPermission = require('../command-permission'); + +class Website +{ + static instance = null; + + constructor() { + if (Website.instance !== null) { + return Website.instance; + } + + this.aliases = []; + this.category = CommandCategory.RESOURCE; + this.isAllowedForContext = CommandPermission.yes; + this.description = 'Talks about the possibility of having a web portal for Simply Plural.'; + } + + /** + * @param {Message} message + * @param {Array} args + */ + async process(message, args) { + const embed = new MessageEmbed(); + + embed.setColor(APP_MAIN_COLOUR); + embed.setAuthor('Website', bot.user.displayAvatarURL({ dynamic: true })); + embed.setDescription( + 'A web portal for Simply Plural is unlikely to be made at the moment. The framework that Simply Plural ' + + 'has been created with has the capability of web development, but it is currently experimental, which ' + + 'would make it buggy and unstable to use. This decision may change later in the year when the framework ' + + 'becomes more stable and once the app is more complete.' + ); + + return message.channel.send(embed); + } +} + +module.exports = new Website();