@elizaos/plugin-discord 2.0.0-alpha.5 → 2.0.0-alpha.537
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +549 -0
- package/dist/accounts.d.ts +164 -0
- package/dist/accounts.d.ts.map +1 -0
- package/dist/actions/actionResultSemantics.d.ts +9 -0
- package/dist/actions/actionResultSemantics.d.ts.map +1 -0
- package/dist/actions/chatWithAttachments.d.ts +4 -0
- package/dist/actions/chatWithAttachments.d.ts.map +1 -0
- package/dist/actions/createPoll.d.ts +4 -0
- package/dist/actions/createPoll.d.ts.map +1 -0
- package/dist/actions/deleteMessage.d.ts +4 -0
- package/dist/actions/deleteMessage.d.ts.map +1 -0
- package/dist/actions/downloadMedia.d.ts +4 -0
- package/dist/actions/downloadMedia.d.ts.map +1 -0
- package/dist/actions/editMessage.d.ts +4 -0
- package/dist/actions/editMessage.d.ts.map +1 -0
- package/dist/actions/getUserInfo.d.ts +4 -0
- package/dist/actions/getUserInfo.d.ts.map +1 -0
- package/dist/actions/joinChannel.d.ts +4 -0
- package/dist/actions/joinChannel.d.ts.map +1 -0
- package/dist/actions/leaveChannel.d.ts +4 -0
- package/dist/actions/leaveChannel.d.ts.map +1 -0
- package/dist/actions/listChannels.d.ts +4 -0
- package/dist/actions/listChannels.d.ts.map +1 -0
- package/dist/actions/pinMessage.d.ts +4 -0
- package/dist/actions/pinMessage.d.ts.map +1 -0
- package/dist/actions/reactToMessage.d.ts +4 -0
- package/dist/actions/reactToMessage.d.ts.map +1 -0
- package/dist/actions/readChannel.d.ts +4 -0
- package/dist/actions/readChannel.d.ts.map +1 -0
- package/dist/actions/searchMessages.d.ts +4 -0
- package/dist/actions/searchMessages.d.ts.map +1 -0
- package/dist/actions/sendDM.d.ts +4 -0
- package/dist/actions/sendDM.d.ts.map +1 -0
- package/dist/actions/sendMessage.d.ts +4 -0
- package/dist/actions/sendMessage.d.ts.map +1 -0
- package/dist/actions/serverInfo.d.ts +4 -0
- package/dist/actions/serverInfo.d.ts.map +1 -0
- package/dist/actions/setup-credentials.d.ts +25 -0
- package/dist/actions/setup-credentials.d.ts.map +1 -0
- package/dist/actions/summarizeConversation.d.ts +4 -0
- package/dist/actions/summarizeConversation.d.ts.map +1 -0
- package/dist/actions/transcribeMedia.d.ts +4 -0
- package/dist/actions/transcribeMedia.d.ts.map +1 -0
- package/dist/actions/unpinMessage.d.ts +4 -0
- package/dist/actions/unpinMessage.d.ts.map +1 -0
- package/dist/allowlist.d.ts +198 -0
- package/dist/allowlist.d.ts.map +1 -0
- package/dist/attachments.d.ts +93 -0
- package/dist/attachments.d.ts.map +1 -0
- package/dist/banner.d.ts +39 -0
- package/dist/banner.d.ts.map +1 -0
- package/dist/compat.d.ts +57 -0
- package/dist/compat.d.ts.map +1 -0
- package/dist/config.d.ts +156 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/debouncer.d.ts +25 -0
- package/dist/debouncer.d.ts.map +1 -0
- package/dist/discord-commands.d.ts +16 -0
- package/dist/discord-commands.d.ts.map +1 -0
- package/dist/discord-events.d.ts +54 -0
- package/dist/discord-events.d.ts.map +1 -0
- package/dist/discord-history.d.ts +49 -0
- package/dist/discord-history.d.ts.map +1 -0
- package/dist/discord-interactions.d.ts +45 -0
- package/dist/discord-interactions.d.ts.map +1 -0
- package/dist/discord-local-service.d.ts +94 -0
- package/dist/discord-local-service.d.ts.map +1 -0
- package/dist/discord-reactions.d.ts +29 -0
- package/dist/discord-reactions.d.ts.map +1 -0
- package/dist/draft-chunking.d.ts +9 -0
- package/dist/draft-chunking.d.ts.map +1 -0
- package/dist/draft-stream.d.ts +23 -0
- package/dist/draft-stream.d.ts.map +1 -0
- package/dist/environment.d.ts +23 -0
- package/dist/environment.d.ts.map +1 -0
- package/dist/generated/prompts/typescript/prompts.d.ts +44 -0
- package/dist/generated/prompts/typescript/prompts.d.ts.map +1 -0
- package/dist/generated/specs/spec-helpers.d.ts +49 -0
- package/dist/generated/specs/spec-helpers.d.ts.map +1 -0
- package/dist/generated/specs/specs.d.ts +90 -0
- package/dist/generated/specs/specs.d.ts.map +1 -0
- package/dist/identity.d.ts +8 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/inbound-envelope.d.ts +8 -0
- package/dist/inbound-envelope.d.ts.map +1 -0
- package/dist/index.browser.d.ts +34 -0
- package/dist/index.browser.d.ts.map +1 -0
- package/dist/index.d.ts +19 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15379 -0
- package/dist/index.js.map +72 -0
- package/dist/messages.d.ts +62 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messaging.d.ts +129 -0
- package/dist/messaging.d.ts.map +1 -0
- package/dist/native-commands.d.ts +142 -0
- package/dist/native-commands.d.ts.map +1 -0
- package/dist/owner-pairing-service.d.ts +73 -0
- package/dist/owner-pairing-service.d.ts.map +1 -0
- package/dist/permissionEvents.d.ts +42 -0
- package/dist/permissionEvents.d.ts.map +1 -0
- package/dist/permissions.d.ts +36 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/profileSync.d.ts +8 -0
- package/dist/profileSync.d.ts.map +1 -0
- package/dist/providers/channelState.d.ts +14 -0
- package/dist/providers/channelState.d.ts.map +1 -0
- package/dist/providers/guildInfo.d.ts +15 -0
- package/dist/providers/guildInfo.d.ts.map +1 -0
- package/dist/providers/voiceState.d.ts +12 -0
- package/dist/providers/voiceState.d.ts.map +1 -0
- package/dist/reasoning-tags.d.ts +2 -0
- package/dist/reasoning-tags.d.ts.map +1 -0
- package/dist/service.d.ts +207 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/setup-routes.d.ts +23 -0
- package/dist/setup-routes.d.ts.map +1 -0
- package/dist/slash-commands.d.ts +39 -0
- package/dist/slash-commands.d.ts.map +1 -0
- package/dist/status-reactions.d.ts +11 -0
- package/dist/status-reactions.d.ts.map +1 -0
- package/dist/test-setup.d.ts +1 -0
- package/dist/test-setup.d.ts.map +1 -0
- package/dist/tests.d.ts +123 -0
- package/dist/tests.d.ts.map +1 -0
- package/dist/types.d.ts +329 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/typing.d.ts +7 -0
- package/dist/typing.d.ts.map +1 -0
- package/dist/utils.d.ts +48 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/voice.d.ts +234 -0
- package/dist/voice.d.ts.map +1 -0
- package/package.json +25 -20
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { ChannelType, type Character, type Content, type IAgentRuntime, type Media, type Memory, Service, type TargetInfo, type UUID } from "@elizaos/core";
|
|
2
|
+
/**
|
|
3
|
+
* IMPORTANT: Discord ID Handling - Why stringToUuid() instead of asUUID()
|
|
4
|
+
*
|
|
5
|
+
* Discord uses "snowflake" IDs - large 64-bit integers represented as strings
|
|
6
|
+
* (e.g., "1253563208833433701"). These are NOT valid UUIDs.
|
|
7
|
+
*
|
|
8
|
+
* UUID format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12 hex digits with dashes)
|
|
9
|
+
* Discord ID: 1253563208833433701 (plain number string)
|
|
10
|
+
*
|
|
11
|
+
* The two UUID-related functions behave differently:
|
|
12
|
+
*
|
|
13
|
+
* - `asUUID(str)` - VALIDATES that the string is already a valid UUID format.
|
|
14
|
+
* If not, it throws: "Error: Invalid UUID format: 1253563208833433701"
|
|
15
|
+
* Use only when you're certain the input is already a valid UUID.
|
|
16
|
+
*
|
|
17
|
+
* - `stringToUuid(str)` - CONVERTS any string into a deterministic UUID by hashing it.
|
|
18
|
+
* Always succeeds. The same input always produces the same UUID output.
|
|
19
|
+
* Use this for Discord snowflake IDs.
|
|
20
|
+
*
|
|
21
|
+
* When working with Discord IDs in ElizaOS:
|
|
22
|
+
*
|
|
23
|
+
* 1. `stringToUuid(discordId)` - For storing Discord IDs in UUID fields (e.g., `messageServerId`).
|
|
24
|
+
*
|
|
25
|
+
* 2. `createUniqueUuid(runtime, discordId)` - For `worldId` and `roomId`. This adds the agent's
|
|
26
|
+
* ID to the hash, ensuring each agent has its own unique namespace for the same Discord server.
|
|
27
|
+
*
|
|
28
|
+
* 3. `messageServerId` - The correct property name for server IDs on Room and World objects.
|
|
29
|
+
*
|
|
30
|
+
* 4. Discord-specific events (e.g., DiscordEventTypes.VOICE_STATE_UPDATE) are not in core's
|
|
31
|
+
* EventPayloadMap. When emitting these events, cast to `string[]` and payload to `any`
|
|
32
|
+
* to use the generic emitEvent overload.
|
|
33
|
+
*/
|
|
34
|
+
import { type Channel, Client as DiscordJsClient, type Guild, type GuildMember, type Interaction, type Message, type MessageReaction, type PartialMessageReaction, type PartialUser, type User } from "discord.js";
|
|
35
|
+
import { type ICompatRuntime } from "./compat";
|
|
36
|
+
import { MessageManager } from "./messages";
|
|
37
|
+
import type { ChannelHistoryOptions, ChannelHistoryResult, DiscordSettings, DiscordSlashCommand, IDiscordService } from "./types";
|
|
38
|
+
import { VoiceManager } from "./voice";
|
|
39
|
+
/**
|
|
40
|
+
* DiscordService class representing a service for interacting with Discord.
|
|
41
|
+
* @extends Service
|
|
42
|
+
* @implements IDiscordService
|
|
43
|
+
* @property {string} serviceType - The type of service, set to DISCORD_SERVICE_NAME.
|
|
44
|
+
* @property {string} capabilityDescription - A description of the service's capabilities.
|
|
45
|
+
* @property {DiscordJsClient} client - The DiscordJsClient used for communication.
|
|
46
|
+
* @property {Character} character - The character associated with the service.
|
|
47
|
+
* @property {MessageManager} messageManager - The manager for handling messages.
|
|
48
|
+
* @property {VoiceManager} voiceManager - The manager for handling voice communication.
|
|
49
|
+
*/
|
|
50
|
+
export declare class DiscordService extends Service implements IDiscordService {
|
|
51
|
+
protected runtime: ICompatRuntime;
|
|
52
|
+
static serviceType: string;
|
|
53
|
+
capabilityDescription: string;
|
|
54
|
+
client: DiscordJsClient | null;
|
|
55
|
+
character: Character;
|
|
56
|
+
discordSettings: DiscordSettings;
|
|
57
|
+
messageManager?: MessageManager;
|
|
58
|
+
voiceManager?: VoiceManager;
|
|
59
|
+
private messageDebouncer?;
|
|
60
|
+
private channelDebouncer?;
|
|
61
|
+
private _loginFailed;
|
|
62
|
+
private userSelections;
|
|
63
|
+
private timeouts;
|
|
64
|
+
clientReadyPromise: Promise<void> | null;
|
|
65
|
+
/**
|
|
66
|
+
* List of allowed channel IDs (parsed from CHANNEL_IDS env var).
|
|
67
|
+
* If undefined, all channels are allowed.
|
|
68
|
+
*/
|
|
69
|
+
private allowedChannelIds?;
|
|
70
|
+
/**
|
|
71
|
+
* Set of dynamically added channel IDs through joinChannel action.
|
|
72
|
+
* These are merged with allowedChannelIds for runtime channel management.
|
|
73
|
+
*/
|
|
74
|
+
private dynamicChannelIds;
|
|
75
|
+
private ownerDiscordUserIds;
|
|
76
|
+
slashCommands: DiscordSlashCommand[];
|
|
77
|
+
private commandRegistrationQueue;
|
|
78
|
+
allowAllSlashCommands: Set<string>;
|
|
79
|
+
/**
|
|
80
|
+
* Resolves owner Discord user IDs from either the explicit
|
|
81
|
+
* ELIZA_DISCORD_OWNER_USER_IDS_JSON setting or the Discord application's
|
|
82
|
+
* team/owner metadata, and registers them as Discord connector admins.
|
|
83
|
+
* Called from the extracted onReady handler once the client is ready.
|
|
84
|
+
*/
|
|
85
|
+
refreshOwnerDiscordUserIds(client: DiscordJsClient): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Registers slash commands with Discord. Called from the onReady event
|
|
88
|
+
* handler via the DISCORD_REGISTER_COMMANDS event emitted by
|
|
89
|
+
* registerBuiltinSlashCommands(). Merges incoming commands with the
|
|
90
|
+
* existing set, then pushes them to Discord both globally (for DMs) and
|
|
91
|
+
* per-guild (for instant availability).
|
|
92
|
+
*/
|
|
93
|
+
registerSlashCommands(commands: DiscordSlashCommand[]): Promise<void>;
|
|
94
|
+
private resolveDiscordTargetUserId;
|
|
95
|
+
/**
|
|
96
|
+
* Constructor for Discord client.
|
|
97
|
+
* Initializes the Discord client with specified intents and partials,
|
|
98
|
+
* sets up event listeners, and ensures all servers exist.
|
|
99
|
+
*
|
|
100
|
+
* @param {IAgentRuntime} runtime - The AgentRuntime instance
|
|
101
|
+
*/
|
|
102
|
+
constructor(runtime: IAgentRuntime);
|
|
103
|
+
isHealthy(): boolean;
|
|
104
|
+
static start(runtime: IAgentRuntime): Promise<DiscordService>;
|
|
105
|
+
/**
|
|
106
|
+
* The SendHandlerFunction implementation for Discord.
|
|
107
|
+
* @param {IAgentRuntime} runtime - The runtime instance.
|
|
108
|
+
* @param {TargetInfo} target - The target information for the message.
|
|
109
|
+
* @param {Content} content - The content of the message to send.
|
|
110
|
+
* @returns {Promise<void>} A promise that resolves when the message is sent or rejects on error.
|
|
111
|
+
* @throws {Error} If the client is not ready, target is invalid, or sending fails.
|
|
112
|
+
*/
|
|
113
|
+
handleSendMessage(runtime: IAgentRuntime, target: TargetInfo, content: Content): Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
* Set up event listeners for the client.
|
|
116
|
+
* Delegates to the extracted setupDiscordEventListeners() function.
|
|
117
|
+
* @private
|
|
118
|
+
*/
|
|
119
|
+
private setupEventListeners;
|
|
120
|
+
/**
|
|
121
|
+
* Handles tasks to be performed once the Discord client is fully ready. Delegates to extracted module.
|
|
122
|
+
* @private
|
|
123
|
+
*/
|
|
124
|
+
private onReady;
|
|
125
|
+
/**
|
|
126
|
+
* Registers send handlers for the Discord service instance.
|
|
127
|
+
* @static
|
|
128
|
+
*/
|
|
129
|
+
static registerSendHandlers(runtime: IAgentRuntime, serviceInstance: DiscordService): void;
|
|
130
|
+
/**
|
|
131
|
+
* Fetches all members who have access to a specific text channel.
|
|
132
|
+
*/
|
|
133
|
+
getTextChannelMembers(channelId: string, useCache?: boolean): Promise<Array<{
|
|
134
|
+
id: string;
|
|
135
|
+
username: string;
|
|
136
|
+
displayName: string;
|
|
137
|
+
}>>;
|
|
138
|
+
/**
|
|
139
|
+
* Fetches the topic/description of a Discord text channel.
|
|
140
|
+
*/
|
|
141
|
+
getChannelTopic(channelId: string): Promise<string | null>;
|
|
142
|
+
/**
|
|
143
|
+
* Checks if a channel ID is allowed based on both env config and dynamic additions.
|
|
144
|
+
*/
|
|
145
|
+
isChannelAllowed(channelId: string): boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Adds a channel to the dynamic allowed list.
|
|
148
|
+
*/
|
|
149
|
+
addAllowedChannel(channelId: string): boolean;
|
|
150
|
+
/**
|
|
151
|
+
* Removes a channel from the dynamic allowed list.
|
|
152
|
+
*/
|
|
153
|
+
removeAllowedChannel(channelId: string): boolean;
|
|
154
|
+
/**
|
|
155
|
+
* Gets the list of all allowed channels (env + dynamic).
|
|
156
|
+
*/
|
|
157
|
+
getAllowedChannels(): string[];
|
|
158
|
+
/**
|
|
159
|
+
* Fetches and persists message history from a Discord channel. Delegates to extracted module.
|
|
160
|
+
*/
|
|
161
|
+
fetchChannelHistory(channelId: string, options?: ChannelHistoryOptions): Promise<ChannelHistoryResult>;
|
|
162
|
+
/**
|
|
163
|
+
* Builds a Memory object from a Discord Message. Delegates to extracted module.
|
|
164
|
+
*/
|
|
165
|
+
buildMemoryFromMessage(message: Message, options?: {
|
|
166
|
+
processedContent?: string;
|
|
167
|
+
processedAttachments?: Media[];
|
|
168
|
+
extraContent?: Record<string, unknown>;
|
|
169
|
+
extraMetadata?: Record<string, unknown>;
|
|
170
|
+
}): Promise<Memory | null>;
|
|
171
|
+
/**
|
|
172
|
+
* Maps a Discord snowflake user id to the runtime entity UUID, substituting
|
|
173
|
+
* the canonical Eliza owner entity when the user is a known Discord owner.
|
|
174
|
+
*/
|
|
175
|
+
resolveDiscordEntityId(userId: string): UUID;
|
|
176
|
+
/**
|
|
177
|
+
* Handles reaction addition. Delegates to extracted module.
|
|
178
|
+
*/
|
|
179
|
+
handleReactionAdd(reaction: MessageReaction | PartialMessageReaction, user: User | PartialUser): Promise<void>;
|
|
180
|
+
/**
|
|
181
|
+
* Handles reaction removal. Delegates to extracted module.
|
|
182
|
+
*/
|
|
183
|
+
handleReactionRemove(reaction: MessageReaction | PartialMessageReaction, user: User | PartialUser): Promise<void>;
|
|
184
|
+
/**
|
|
185
|
+
* Handles guild creation (bot joined a guild). Delegates to extracted module.
|
|
186
|
+
*/
|
|
187
|
+
handleGuildCreate(guild: Guild): Promise<void>;
|
|
188
|
+
/**
|
|
189
|
+
* Handles interaction creation (slash commands, modals, etc). Delegates to
|
|
190
|
+
* extracted module.
|
|
191
|
+
*/
|
|
192
|
+
handleInteractionCreate(interaction: Interaction): Promise<void>;
|
|
193
|
+
/**
|
|
194
|
+
* Handles a new guild member joining — emits an ENTITY_JOINED event so the
|
|
195
|
+
* runtime can create the entity record.
|
|
196
|
+
*/
|
|
197
|
+
handleGuildMemberAdd(member: GuildMember): Promise<void>;
|
|
198
|
+
/**
|
|
199
|
+
* Stops the Discord service and cleans up resources.
|
|
200
|
+
*/
|
|
201
|
+
stop(): Promise<void>;
|
|
202
|
+
/**
|
|
203
|
+
* Asynchronously retrieves the type of a given channel.
|
|
204
|
+
*/
|
|
205
|
+
getChannelType(channel: Channel): Promise<ChannelType>;
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discord local setup HTTP routes.
|
|
3
|
+
*
|
|
4
|
+
* Provides status, authorization, and subscription management for the
|
|
5
|
+
* Discord local IPC connector:
|
|
6
|
+
*
|
|
7
|
+
* GET /api/discord-local/status connection + auth status
|
|
8
|
+
* POST /api/discord-local/authorize start OAuth authorize flow
|
|
9
|
+
* POST /api/discord-local/disconnect tear down session
|
|
10
|
+
* GET /api/discord-local/guilds list guilds (requires auth)
|
|
11
|
+
* GET /api/discord-local/channels list channels for a guild
|
|
12
|
+
* POST /api/discord-local/subscriptions subscribe to channel messages
|
|
13
|
+
*
|
|
14
|
+
* These routes are registered with `rawPath: true` so they mount at their
|
|
15
|
+
* legacy paths without the plugin-name prefix.
|
|
16
|
+
*/
|
|
17
|
+
import type { Route } from "@elizaos/core";
|
|
18
|
+
/**
|
|
19
|
+
* Plugin routes for Discord local setup.
|
|
20
|
+
* Registered with `rawPath: true` to preserve legacy `/api/discord-local/*` paths.
|
|
21
|
+
*/
|
|
22
|
+
export declare const discordSetupRoutes: Route[];
|
|
23
|
+
//# sourceMappingURL=setup-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-routes.d.ts","sourceRoot":"","sources":["../setup-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAEX,KAAK,EAGL,MAAM,eAAe,CAAC;AA6RvB;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,EAqCrC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type IAgentRuntime } from "@elizaos/core";
|
|
2
|
+
import type { AutocompleteInteraction, ChatInputCommandInteraction } from "discord.js";
|
|
3
|
+
type SlashCommandRole = "OWNER" | "ADMIN" | "USER" | "GUEST";
|
|
4
|
+
interface SlashCommand {
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
options?: SlashCommandOption[];
|
|
8
|
+
ephemeral?: boolean;
|
|
9
|
+
cooldown?: number;
|
|
10
|
+
ownerOnly?: boolean;
|
|
11
|
+
/** Minimum elizaOS role required to execute this command. */
|
|
12
|
+
requiredRole?: SlashCommandRole;
|
|
13
|
+
execute: (interaction: ChatInputCommandInteraction, runtime: IAgentRuntime) => Promise<void>;
|
|
14
|
+
autocomplete?: (interaction: AutocompleteInteraction) => Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
/** Context resolved by the Discord service before dispatching built-in commands. */
|
|
17
|
+
export interface SlashCommandContext {
|
|
18
|
+
entityId: string;
|
|
19
|
+
roomId: string;
|
|
20
|
+
}
|
|
21
|
+
interface SlashCommandOption {
|
|
22
|
+
name: string;
|
|
23
|
+
description: string;
|
|
24
|
+
type: "string" | "number" | "boolean" | "user" | "channel" | "role";
|
|
25
|
+
required?: boolean;
|
|
26
|
+
choices?: Array<{
|
|
27
|
+
name: string;
|
|
28
|
+
value: string;
|
|
29
|
+
}>;
|
|
30
|
+
autocomplete?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export declare function registerSlashCommands(runtime: IAgentRuntime): Promise<void>;
|
|
33
|
+
export declare function handleSlashCommand(interaction: ChatInputCommandInteraction, runtime: IAgentRuntime, context?: SlashCommandContext): Promise<void>;
|
|
34
|
+
export declare function handleAutocomplete(interaction: AutocompleteInteraction): Promise<void>;
|
|
35
|
+
export declare function getRegisteredCommands(): ReadonlyMap<string, SlashCommand>;
|
|
36
|
+
export declare function addCommand(command: SlashCommand): void;
|
|
37
|
+
export declare function removeCommand(name: string): boolean;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=slash-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash-commands.d.ts","sourceRoot":"","sources":["../slash-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,EACX,uBAAuB,EACvB,2BAA2B,EAC3B,MAAM,YAAY,CAAC;AAKpB,KAAK,gBAAgB,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAE7D,UAAU,YAAY;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,OAAO,EAAE,CACR,WAAW,EAAE,2BAA2B,EACxC,OAAO,EAAE,aAAa,KAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAED,oFAAoF;AACpF,MAAM,WAAW,mBAAmB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CACf;AAED,UAAU,kBAAkB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAqZD,wBAAsB,qBAAqB,CAC1C,OAAO,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAsB,kBAAkB,CACvC,WAAW,EAAE,2BAA2B,EACxC,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA2Gf;AAED,wBAAsB,kBAAkB,CACvC,WAAW,EAAE,uBAAuB,GAClC,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAgB,qBAAqB,IAAI,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAEzE;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAEtD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Message as DiscordMessage } from "discord.js";
|
|
2
|
+
export type StatusReactionScope = "all" | "group-mentions" | "none";
|
|
3
|
+
export interface StatusReactionController {
|
|
4
|
+
setQueued: () => void;
|
|
5
|
+
setThinking: () => void;
|
|
6
|
+
setDone: () => void;
|
|
7
|
+
setError: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function shouldShowStatusReaction(scope: StatusReactionScope, message: DiscordMessage, botId: string | undefined): boolean;
|
|
10
|
+
export declare function createStatusReactionController(message: DiscordMessage): StatusReactionController;
|
|
11
|
+
//# sourceMappingURL=status-reactions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-reactions.d.ts","sourceRoot":"","sources":["../status-reactions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,gBAAgB,GAAG,MAAM,CAAC;AAEpE,MAAM,WAAW,wBAAwB;IACxC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACrB;AAOD,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,MAAM,GAAG,SAAS,GACvB,OAAO,CAeT;AAED,wBAAgB,8BAA8B,CAC7C,OAAO,EAAE,cAAc,GACrB,wBAAwB,CA6C1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=test-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-setup.d.ts","sourceRoot":"","sources":["../test-setup.ts"],"names":[],"mappings":""}
|
package/dist/tests.d.ts
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type { Readable } from "node:stream";
|
|
2
|
+
import { type VoiceConnection } from "@discordjs/voice";
|
|
3
|
+
import { type IAgentRuntime, type TestSuite } from "@elizaos/core";
|
|
4
|
+
import { AttachmentBuilder, type Guild, type TextChannel } from "discord.js";
|
|
5
|
+
import type { DiscordService } from "./service";
|
|
6
|
+
/**
|
|
7
|
+
* Represents a test suite for Discord functionality.
|
|
8
|
+
* @class DiscordTestSuite
|
|
9
|
+
* @implements TestSuite
|
|
10
|
+
* @property {string} name - The name of the test suite
|
|
11
|
+
* @property {DiscordService | null} discordClient - The Discord client instance
|
|
12
|
+
* @property {Array<{ name: string; fn: (runtime: IAgentRuntime) => Promise<void> }>} tests - Array of test functions
|
|
13
|
+
*/
|
|
14
|
+
export declare class DiscordTestSuite implements TestSuite {
|
|
15
|
+
name: string;
|
|
16
|
+
private discordClient;
|
|
17
|
+
tests: {
|
|
18
|
+
name: string;
|
|
19
|
+
fn: (runtime: IAgentRuntime) => Promise<void>;
|
|
20
|
+
}[];
|
|
21
|
+
/**
|
|
22
|
+
* Constructor for initializing the tests array with test cases to be executed.
|
|
23
|
+
*
|
|
24
|
+
* @constructor
|
|
25
|
+
* @this {TestSuite}
|
|
26
|
+
*/
|
|
27
|
+
constructor();
|
|
28
|
+
/**
|
|
29
|
+
* Asynchronously tests the creation of Discord client using the provided runtime.
|
|
30
|
+
*
|
|
31
|
+
* @param {IAgentRuntime} runtime - The agent runtime used to obtain the Discord service.
|
|
32
|
+
* @returns {Promise<void>} - A Promise that resolves once the Discord client is ready.
|
|
33
|
+
* @throws {Error} - If an error occurs while creating the Discord client.
|
|
34
|
+
*/
|
|
35
|
+
testCreatingDiscordClient(runtime: IAgentRuntime): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Asynchronously tests the join voice slash command functionality.
|
|
38
|
+
*
|
|
39
|
+
* @param {IAgentRuntime} runtime - The runtime environment for the agent.
|
|
40
|
+
* @returns {Promise<void>} - A promise that resolves once the test is complete.
|
|
41
|
+
* @throws {Error} - If there is an error in executing the slash command test.
|
|
42
|
+
*/
|
|
43
|
+
testJoinVoiceSlashCommand(runtime: IAgentRuntime): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Asynchronously tests the leave voice channel slash command.
|
|
46
|
+
*
|
|
47
|
+
* @param {IAgentRuntime} runtime - The Agent Runtime instance.
|
|
48
|
+
* @returns {Promise<void>} A promise that resolves when the test is complete.
|
|
49
|
+
*/
|
|
50
|
+
testLeaveVoiceSlashCommand(runtime: IAgentRuntime): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Test Text to Speech playback.
|
|
53
|
+
* @param {IAgentRuntime} runtime - The Agent Runtime instance.
|
|
54
|
+
* @throws {Error} - If voice channel is invalid, voice connection fails to become ready, or no text to speech service found.
|
|
55
|
+
*/
|
|
56
|
+
testTextToSpeechPlayback(runtime: IAgentRuntime): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Asynchronously tests sending a text message to a specified channel.
|
|
59
|
+
*
|
|
60
|
+
* @param {IAgentRuntime} runtime - The runtime for the agent.
|
|
61
|
+
* @returns {Promise<void>} A Promise that resolves when the message is sent successfully.
|
|
62
|
+
* @throws {Error} If there is an error in sending the text message.
|
|
63
|
+
*/
|
|
64
|
+
testSendingTextMessage(runtime: IAgentRuntime): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Asynchronously handles sending a test message using the given runtime and mock user data.
|
|
67
|
+
*
|
|
68
|
+
* @param {IAgentRuntime} runtime - The agent runtime object.
|
|
69
|
+
* @returns {Promise<void>} A Promise that resolves once the message is handled.
|
|
70
|
+
*/
|
|
71
|
+
testHandlingMessage(runtime: IAgentRuntime): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Asynchronously retrieves the test channel associated with the provided runtime.
|
|
74
|
+
*
|
|
75
|
+
* @param {IAgentRuntime} runtime - The runtime object containing necessary information.
|
|
76
|
+
* @returns {Promise<Channel>} The test channel retrieved from the Discord client.
|
|
77
|
+
* @throws {Error} If no test channel is found.
|
|
78
|
+
*/
|
|
79
|
+
getTestChannel(runtime: IAgentRuntime): Promise<import("discord.js").Channel>;
|
|
80
|
+
/**
|
|
81
|
+
* Async function to send a message to a text-based channel.
|
|
82
|
+
*
|
|
83
|
+
* @param {TextChannel} channel - The text-based channel the message is being sent to.
|
|
84
|
+
* @param {string} messageContent - The content of the message being sent.
|
|
85
|
+
* @param {AttachmentBuilder[]} files - An array of files to include in the message.
|
|
86
|
+
* @throws {Error} If the channel is not a text-based channel or does not exist.
|
|
87
|
+
* @throws {Error} If there is an error sending the message.
|
|
88
|
+
*/
|
|
89
|
+
sendMessageToChannel(channel: TextChannel, messageContent: string, files: AttachmentBuilder[]): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* Play an audio stream from a given response stream using the provided VoiceConnection.
|
|
92
|
+
*
|
|
93
|
+
* @param responseStream - The response stream to play as audio.
|
|
94
|
+
* @param connection - The VoiceConnection to use for playing the audio.
|
|
95
|
+
* @returns A Promise that resolves when the TTS playback is finished.
|
|
96
|
+
*/
|
|
97
|
+
playAudioStream(responseStream: ReadableStream | NodeJS.ReadableStream | Readable, connection: VoiceConnection): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* Retrieves the active guild where the bot is currently connected to a voice channel.
|
|
100
|
+
*
|
|
101
|
+
* @param {DiscordService} discordClient The DiscordService instance used to interact with the Discord API.
|
|
102
|
+
* @returns {Promise<Guild>} The active guild where the bot is currently connected to a voice channel.
|
|
103
|
+
* @throws {Error} If no active voice connection is found for the bot.
|
|
104
|
+
*/
|
|
105
|
+
getActiveGuild(discordClient: DiscordService): Promise<Guild>;
|
|
106
|
+
/**
|
|
107
|
+
* Waits for the VoiceManager in the Discord client to be ready.
|
|
108
|
+
*
|
|
109
|
+
* @param {DiscordService} discordClient - The Discord client to check for VoiceManager readiness.
|
|
110
|
+
* @throws {Error} If the Discord client is not initialized.
|
|
111
|
+
* @returns {Promise<void>} A promise that resolves when the VoiceManager is ready.
|
|
112
|
+
*/
|
|
113
|
+
private waitForVoiceManagerReady;
|
|
114
|
+
/**
|
|
115
|
+
* Validates the Discord test channel ID by checking if it is set in the runtime or environment variables.
|
|
116
|
+
* If the test channel ID is not set, an error is thrown.
|
|
117
|
+
*
|
|
118
|
+
* @param {IAgentRuntime} runtime The runtime object containing the settings and environment variables.
|
|
119
|
+
* @returns {string} The validated Discord test channel ID.
|
|
120
|
+
*/
|
|
121
|
+
private validateChannelId;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=tests.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../tests.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAMN,KAAK,eAAe,EAEpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,KAAK,aAAa,EAGlB,KAAK,SAAS,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,iBAAiB,EAGjB,KAAK,KAAK,EAEV,KAAK,WAAW,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAOhD;;;;;;;GAOG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IACjD,IAAI,SAAa;IACjB,OAAO,CAAC,aAAa,CAAkB;IACvC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,EAAE,CAAC;IAEzE;;;;;OAKG;;IA8BH;;;;;;OAMG;IACG,yBAAyB,CAAC,OAAO,EAAE,aAAa;IAgCtD;;;;;;OAMG;IACG,yBAAyB,CAAC,OAAO,EAAE,aAAa;IAkDtD;;;;;OAKG;IACG,0BAA0B,CAAC,OAAO,EAAE,aAAa;IAqCvD;;;;OAIG;IACG,wBAAwB,CAAC,OAAO,EAAE,aAAa;IA0DrD;;;;;;OAMG;IACG,sBAAsB,CAAC,OAAO,EAAE,aAAa;IAoBnD;;;;;OAKG;IACG,mBAAmB,CAAC,OAAO,EAAE,aAAa;IA2DhD;;;;;;OAMG;IACG,cAAc,CAAC,OAAO,EAAE,aAAa;IAgB3C;;;;;;;;OAQG;IACG,oBAAoB,CACzB,OAAO,EAAE,WAAW,EACpB,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,iBAAiB,EAAE;IAqB3B;;;;;;OAMG;IACG,eAAe,CACpB,cAAc,EAAE,cAAc,GAAG,MAAM,CAAC,cAAc,GAAG,QAAQ,EACjE,UAAU,EAAE,eAAe;IA4B5B;;;;;;OAMG;IACG,cAAc,CAAC,aAAa,EAAE,cAAc;IAiBlD;;;;;;OAMG;YACW,wBAAwB;IAqBtC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;CAWzB"}
|