diff --git a/Document/Message.md b/Document/Message.md
index 2bbedcd..ac5c959 100644
--- a/Document/Message.md
+++ b/Document/Message.md
@@ -5,31 +5,6 @@
## Interaction
-Fetch Commands data
-
-```js
-/* Save to cache */
-// In guild (Opcode 24)
-const res = await guild.searchInteraction(
- {
- limit: 100, // default: 1
- query: 'ping', // optional
- type: 'CHAT_INPUT', // default: 'CHAT_INPUT'
- offset: 0, // default: 0
- botId: 'botid1'
- }
-);
-// With `type` && `BotId`: Return ApplicationCommand; else return undefined
-// Fetch all commands (1 bot) Shouldn't be used
-await bot.applications.fetch(
- {
- guildId: 'guild id to search', // optional
- force: false, // Using cache or createDMs to bot
- }
-);
-```
-
-
Button Click
```js
diff --git a/src/client/websocket/handlers/GUILD_APPLICATION_COMMANDS_UPDATE.js b/src/client/websocket/handlers/GUILD_APPLICATION_COMMANDS_UPDATE.js
index 009f6de..1a1865d 100644
--- a/src/client/websocket/handlers/GUILD_APPLICATION_COMMANDS_UPDATE.js
+++ b/src/client/websocket/handlers/GUILD_APPLICATION_COMMANDS_UPDATE.js
@@ -5,7 +5,7 @@ module.exports = (client, { d: data }) => {
for (const command of data.application_commands) {
const user = client.users.cache.get(command.application_id);
if (!user || !user.bot) continue;
- user.applications._add(command, true);
+ user.application?.commands?._add(command, true);
}
client.emit(Events.GUILD_APPLICATION_COMMANDS_UPDATE, data);
};
diff --git a/src/errors/Messages.js b/src/errors/Messages.js
index 617dcc2..314e00e 100644
--- a/src/errors/Messages.js
+++ b/src/errors/Messages.js
@@ -165,6 +165,8 @@ const Messages = {
INVALID_BOT_METHOD: 'Bot accounts cannot use this method',
INVALID_USER_METHOD: 'User accounts cannot use this method',
+ BOT_ONLY: 'This method only for bots',
+ USER_ONLY: 'This method only for users',
INTERACTION_SEND_FAILURE: msg => `${msg}`,
diff --git a/src/structures/ApplicationCommand.js b/src/structures/ApplicationCommand.js
index 8ae903a..fcb7813 100644
--- a/src/structures/ApplicationCommand.js
+++ b/src/structures/ApplicationCommand.js
@@ -576,12 +576,6 @@ class ApplicationCommand extends Base {
* @param {Message} message Discord Message
* @param {Array} options The options to Slash Command
* @returns {Promise} Nonce (Discord Timestamp) when command was sent
- * @example
- * const botID = '12345678987654321'
- * const user = await client.users.fetch(botID);
- * const application = await user.applications.fetch();
- * const command = application.commands.first();
- * await command.sendSlashCommand(messsage, ['option1', 'option2']);
*/
async sendSlashCommand(message, options = []) {
// Check Options
@@ -739,12 +733,6 @@ class ApplicationCommand extends Base {
* @param {Message} message Discord Message
* @param {boolean} sendFromMessage nothing .-. not used
* @returns {Promise} Nonce (Discord Timestamp) when command was sent
- * @example
- * const botID = '12345678987654321'
- * const user = await client.users.fetch(botID);
- * const application = await user.applications.fetch();
- * const command = application.commands.first();
- * await command.sendContextMenu(messsage);
*/
async sendContextMenu(message, sendFromMessage = false) {
if (!sendFromMessage && !(message instanceof Message())) {
diff --git a/src/structures/ClientApplication.js b/src/structures/ClientApplication.js
index dfcef30..3a043c6 100644
--- a/src/structures/ClientApplication.js
+++ b/src/structures/ClientApplication.js
@@ -133,8 +133,9 @@ class ClientApplication extends Application {
* @returns {Promise}
*/
async fetch() {
- if (!this.client.user.bot) throw new Error('INVALID_USER_METHOD');
- const app = await this.client.api.oauth2.applications('@me').get();
+ // if (!this.client.user.bot) throw new Error('INVALID_USER_METHOD');
+ const app = await this.client.api.oauth2.applications(this.id).get();
+ console.log(app);
this._patch(app);
return this;
}
diff --git a/src/structures/Message.js b/src/structures/Message.js
index c050abf..9fad6e5 100644
--- a/src/structures/Message.js
+++ b/src/structures/Message.js
@@ -1100,13 +1100,13 @@ class Message extends Base {
},
});
for (const command of data.application_commands) {
- user.applications._add(command, true);
+ user.application?.commands?._add(command, true);
}
- contextCMD = user.applications.cache.find(c => c.name == commandName && c.type === 'MESSAGE');
+ contextCMD = user.application?.commands?.cache.find(c => c.name == commandName && c.type === 'MESSAGE');
if (!contextCMD) {
throw new Error(
'INTERACTION_SEND_FAILURE',
- `Command ${commandName} is not found (with search)\nList command avalible: ${user.applications.cache
+ `Command ${commandName} is not found (with search)\nList command avalible: ${user.application?.commands?.cache
.filter(a => a.type == 'MESSAGE')
.map(a => a.name)
.join(', ')}`,
diff --git a/src/structures/User.js b/src/structures/User.js
index c4956d0..df8918c 100644
--- a/src/structures/User.js
+++ b/src/structures/User.js
@@ -2,9 +2,9 @@
const { default: Collection } = require('@discordjs/collection');
const Base = require('./Base');
+const ClientApplication = require('./ClientApplication');
const TextBasedChannel = require('./interfaces/TextBasedChannel');
const { Error } = require('../errors');
-const ApplicationCommandManager = require('../managers/ApplicationCommandManager');
const { RelationshipTypes } = require('../util/Constants');
const SnowflakeUtil = require('../util/SnowflakeUtil');
const UserFlags = require('../util/UserFlags');
@@ -17,7 +17,6 @@ const UserFlags = require('../util/UserFlags');
class User extends Base {
constructor(client, data) {
super(client);
-
/**
* The user's id
* @type {Snowflake}
@@ -70,10 +69,10 @@ class User extends Base {
this.mutualGuilds = new Collection();
/**
* [Bot] Interaction command manager
- * @type {?ApplicationCommandManager}
+ * @type {?ClientApplication}
* @readonly
*/
- this.applications = null;
+ this.application = null;
this._patch(data);
}
@@ -95,7 +94,7 @@ class User extends Base {
*/
this.bot = Boolean(data.bot);
if (this.bot === true) {
- this.applications = new ApplicationCommandManager(this.client, undefined, this);
+ this.application = new ClientApplication(this.client, { id: this.id });
}
} else if (!this.partial && typeof this.bot !== 'boolean') {
this.bot = false;
@@ -488,6 +487,18 @@ class User extends Base {
return data;
}
+ async fetchBotInfo() {
+ if (this.client.user.bot) throw new Error('INVALID_BOT_METHOD');
+ if (!this.bot) throw new Error('BOT_ONLY');
+ const result = await this.client.api.oauth2.authorize.get({
+ query: {
+ client_id: this.id,
+ scope: 'bot',
+ },
+ });
+ console.log(result);
+ }
+
// These are here only for documentation purposes - they are implemented by TextBasedChannel
/* eslint-disable no-empty-function */
send() {}
diff --git a/src/structures/interfaces/TextBasedChannel.js b/src/structures/interfaces/TextBasedChannel.js
index a3b9cbd..8946f2d 100644
--- a/src/structures/interfaces/TextBasedChannel.js
+++ b/src/structures/interfaces/TextBasedChannel.js
@@ -421,18 +421,18 @@ class TextBasedChannel {
});
for (const command of data.application_commands) {
if (user.id == command.application_id) {
- const c = user.applications._add(command, true);
+ const c = user.application?.commands?._add(command, true);
if (command.name == commandName) commandTarget = c;
} else {
const tempUser = this.client.users.cache.get(command.application_id);
if (tempUser && tempUser.bot && tempUser.applications) {
- tempUser.applications._add(command, true);
+ tempUser.application?.commands?._add(command, true);
}
}
}
// Remove
commandTarget =
- commandTarget || user.applications.cache.find(c => c.name === commandName && c.type === 'CHAT_INPUT');
+ commandTarget || user.application?.commands?.cache.find(c => c.name === commandName && c.type === 'CHAT_INPUT');
if (!commandTarget) {
throw new Error(
'INTERACTION_SEND_FAILURE',