mirror of
https://github.com/discordeno/discordeno.git
synced 2026-06-16 03:18:17 +00:00
feat: slash dm (#846)
* chore: cleanup comments * feat: slash in dm and better event args Co-authored-by: Skillz4Killz <Skillz4Killz@users.noreply.github.com>
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
// TODO: DM support idk need to discuss how we solve this
|
|
||||||
import { eventHandlers } from "../../bot.ts";
|
import { eventHandlers } from "../../bot.ts";
|
||||||
import { cacheHandlers } from "../../cache.ts";
|
import { cacheHandlers } from "../../cache.ts";
|
||||||
import { structures } from "../../structures/mod.ts";
|
import { structures } from "../../structures/mod.ts";
|
||||||
@@ -8,16 +7,18 @@ import { DiscordInteraction } from "../../types/interactions/interaction.ts";
|
|||||||
|
|
||||||
export async function handleInteractionCreate(data: DiscordGatewayPayload) {
|
export async function handleInteractionCreate(data: DiscordGatewayPayload) {
|
||||||
const payload = data.d as DiscordInteraction;
|
const payload = data.d as DiscordInteraction;
|
||||||
const discordenoMember = await structures.createDiscordenoMember(
|
const discordenoMember = payload.guild_id
|
||||||
payload.member as DiscordGuildMemberWithUser,
|
? await structures.createDiscordenoMember(
|
||||||
payload.guild_id ?? "",
|
payload.member as DiscordGuildMemberWithUser,
|
||||||
);
|
payload.guild_id,
|
||||||
await cacheHandlers.set("members", discordenoMember.id, discordenoMember);
|
)
|
||||||
|
: undefined;
|
||||||
|
if (discordenoMember) {
|
||||||
|
await cacheHandlers.set("members", discordenoMember.id, discordenoMember);
|
||||||
|
eventHandlers.interactionGuildCreate?.(payload, discordenoMember);
|
||||||
|
} else {
|
||||||
|
eventHandlers.interactionDMCreate?.(payload);
|
||||||
|
}
|
||||||
|
|
||||||
eventHandlers.interactionCreate?.(
|
eventHandlers.interactionCreate?.(payload, discordenoMember);
|
||||||
{
|
|
||||||
...payload,
|
|
||||||
member: discordenoMember,
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,11 +121,19 @@ export interface EventHandlers {
|
|||||||
member: DiscordenoMember,
|
member: DiscordenoMember,
|
||||||
oldMember?: DiscordenoMember,
|
oldMember?: DiscordenoMember,
|
||||||
) => unknown;
|
) => unknown;
|
||||||
// TODO: remove this?
|
/** Sent when a user uses a Slash Command. */
|
||||||
//heartbeat?: () => unknown;
|
|
||||||
/** Sent when a user in a guild uses a Slash Command. */
|
|
||||||
interactionCreate?: (
|
interactionCreate?: (
|
||||||
data: Omit<Interaction, "member"> & { member: DiscordenoMember },
|
data: Omit<Interaction, "member">,
|
||||||
|
member?: DiscordenoMember,
|
||||||
|
) => unknown;
|
||||||
|
/** Sent when a user uses a Slash Command in a guild. */
|
||||||
|
interactionGuildCreate?: (
|
||||||
|
data: Omit<Interaction, "member">,
|
||||||
|
member: DiscordenoMember,
|
||||||
|
) => unknown;
|
||||||
|
/** Sent when a user uses a Slash Command in a dm. */
|
||||||
|
interactionDMCreate?: (
|
||||||
|
data: Omit<Interaction, "member">,
|
||||||
) => unknown;
|
) => unknown;
|
||||||
/** Sent when a message is created. */
|
/** Sent when a message is created. */
|
||||||
messageCreate?: (message: DiscordenoMessage) => unknown;
|
messageCreate?: (message: DiscordenoMessage) => unknown;
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ export async function tellClusterToIdentify(
|
|||||||
) {
|
) {
|
||||||
// When resharding this may exist already
|
// When resharding this may exist already
|
||||||
const oldShard = ws.shards.get(shardId);
|
const oldShard = ws.shards.get(shardId);
|
||||||
// TODO: Use workers
|
|
||||||
await ws.identify(shardId, ws.maxShards);
|
await ws.identify(shardId, ws.maxShards);
|
||||||
|
|
||||||
if (oldShard) {
|
if (oldShard) {
|
||||||
|
|||||||
@@ -173,5 +173,3 @@ Deno.test({
|
|||||||
// TODO: Need to validate tests for these options
|
// TODO: Need to validate tests for these options
|
||||||
// /** Sorting position of the channel */
|
// /** Sorting position of the channel */
|
||||||
// position?: number;
|
// position?: number;
|
||||||
// /** The channel's permission overwrites */
|
|
||||||
// permissionOverwrites?: Overwrite[];
|
|
||||||
|
|||||||
@@ -58,237 +58,3 @@ Deno.test({
|
|||||||
},
|
},
|
||||||
...defaultTestOptions,
|
...defaultTestOptions,
|
||||||
});
|
});
|
||||||
|
|
||||||
// // Role
|
|
||||||
|
|
||||||
// Deno.test({
|
|
||||||
// name: "[role] create a role in a guild",
|
|
||||||
// async fn() {
|
|
||||||
// if (!tempData.guildId) {
|
|
||||||
// throw new Error("guildId not present in temporary data");
|
|
||||||
// }
|
|
||||||
|
|
||||||
// const name = "Discordeno Test";
|
|
||||||
// const role = await createRole(tempData.guildId, {
|
|
||||||
// name,
|
|
||||||
// });
|
|
||||||
|
|
||||||
// // Assertions
|
|
||||||
// assertExists(role);
|
|
||||||
// assertEquals(role.name, name);
|
|
||||||
|
|
||||||
// tempData.roleId = role.id;
|
|
||||||
// },
|
|
||||||
// ...defaultTestOptions,
|
|
||||||
// });
|
|
||||||
|
|
||||||
// Deno.test({
|
|
||||||
// name: "[role] edit a role in a guild",
|
|
||||||
// async fn() {
|
|
||||||
// const name = "Discordeno Test Edited";
|
|
||||||
// const color = 4320244;
|
|
||||||
// const role = await editRole(tempData.guildId, tempData.roleId, {
|
|
||||||
// name,
|
|
||||||
// color,
|
|
||||||
// hoist: false,
|
|
||||||
// mentionable: false,
|
|
||||||
// }) as Role;
|
|
||||||
|
|
||||||
// // Assertions
|
|
||||||
// assertExists(role);
|
|
||||||
// assertEquals(role.name, name);
|
|
||||||
// assertEquals(role.color, color);
|
|
||||||
// assertEquals(role.hoist, false);
|
|
||||||
// assertEquals(role.mentionable, false);
|
|
||||||
|
|
||||||
// tempData.roleId = role.id;
|
|
||||||
// },
|
|
||||||
// ...defaultTestOptions,
|
|
||||||
// });
|
|
||||||
|
|
||||||
// // Channel
|
|
||||||
|
|
||||||
// Deno.test({
|
|
||||||
// name: "[channel] create a channel in a guild",
|
|
||||||
// async fn() {
|
|
||||||
// const channel = await createChannel(tempData.guildId, "test");
|
|
||||||
|
|
||||||
// // Assertions
|
|
||||||
// assertExists(channel);
|
|
||||||
|
|
||||||
// tempData.channelId = channel.id;
|
|
||||||
// },
|
|
||||||
// ...defaultTestOptions,
|
|
||||||
// });
|
|
||||||
|
|
||||||
// Deno.test({
|
|
||||||
// name: "[channel] get a channel in a guild",
|
|
||||||
// async fn() {
|
|
||||||
// const channel = await getChannel(tempData.channelId);
|
|
||||||
|
|
||||||
// // Assertions
|
|
||||||
// assertExists(channel);
|
|
||||||
// assertEquals(channel.id, tempData.channelId);
|
|
||||||
// },
|
|
||||||
// ...defaultTestOptions,
|
|
||||||
// });
|
|
||||||
|
|
||||||
// Deno.test({
|
|
||||||
// name: "[channel] edit a channel in a guild",
|
|
||||||
// async fn() {
|
|
||||||
// const channel = await editChannel(tempData.channelId, {
|
|
||||||
// name: "discordeno-test-edited",
|
|
||||||
// overwrites: [
|
|
||||||
// {
|
|
||||||
// id: tempData.roleId,
|
|
||||||
// type: OverwriteType.ROLE,
|
|
||||||
// allow: ["VIEW_CHANNEL", "SEND_MESSAGES"],
|
|
||||||
// deny: ["USE_EXTERNAL_EMOJIS"],
|
|
||||||
// },
|
|
||||||
// ],
|
|
||||||
// }) as Channel;
|
|
||||||
|
|
||||||
// // Wait 5s for CHANNEL_UPDATE to fire
|
|
||||||
// await delay(3000);
|
|
||||||
|
|
||||||
// // Assertions
|
|
||||||
// assertExists(channel);
|
|
||||||
// assertEquals(channel.name, "discordeno-test-edited");
|
|
||||||
// },
|
|
||||||
// ...defaultTestOptions,
|
|
||||||
// });
|
|
||||||
|
|
||||||
// Deno.test({
|
|
||||||
// name: "[channel] channel overwrite has permission",
|
|
||||||
// fn() {
|
|
||||||
// const channel = cache.channels.get(tempData.channelId);
|
|
||||||
// if (!channel) throw new Error("Channel not found");
|
|
||||||
// if (!channel.permissionOverwrites) {
|
|
||||||
// throw new Error("permissionOverwrites not found");
|
|
||||||
// }
|
|
||||||
|
|
||||||
// const hasPerm = channelOverwriteHasPermission(
|
|
||||||
// tempData.guildId,
|
|
||||||
// tempData.roleId,
|
|
||||||
// channel.permissionOverwrites,
|
|
||||||
// ["VIEW_CHANNEL", "SEND_MESSAGES"],
|
|
||||||
// );
|
|
||||||
// const missingPerm = channelOverwriteHasPermission(
|
|
||||||
// tempData.guildId,
|
|
||||||
// tempData.roleId,
|
|
||||||
// channel.permissionOverwrites,
|
|
||||||
// ["USE_EXTERNAL_EMOJIS"],
|
|
||||||
// );
|
|
||||||
|
|
||||||
// assertEquals(hasPerm, true);
|
|
||||||
// assertEquals(missingPerm, false);
|
|
||||||
// },
|
|
||||||
// ...defaultTestOptions,
|
|
||||||
// });
|
|
||||||
|
|
||||||
// // Message
|
|
||||||
|
|
||||||
// Deno.test({
|
|
||||||
// name: "[message] send a message in a text channel",
|
|
||||||
// async fn() {
|
|
||||||
// const message = await sendMessage(tempData.channelId, {
|
|
||||||
// embed: {
|
|
||||||
// title: "Discordeno Test",
|
|
||||||
// },
|
|
||||||
// });
|
|
||||||
|
|
||||||
// // Assertions
|
|
||||||
// assertExists(message);
|
|
||||||
// assertEquals(message.embeds[0].title, "Discordeno Test");
|
|
||||||
|
|
||||||
// tempData.messageId = message.id;
|
|
||||||
// },
|
|
||||||
// ...defaultTestOptions,
|
|
||||||
// });
|
|
||||||
|
|
||||||
// Deno.test({
|
|
||||||
// name: "[message] get a message in a guild",
|
|
||||||
// async fn() {
|
|
||||||
// const message = await getMessage(tempData.channelId, tempData.messageId);
|
|
||||||
|
|
||||||
// // Assertions
|
|
||||||
// assertExists(message);
|
|
||||||
// assertEquals(message.embeds[0].title, "Discordeno Test");
|
|
||||||
// },
|
|
||||||
// ...defaultTestOptions,
|
|
||||||
// });
|
|
||||||
|
|
||||||
// Deno.test({
|
|
||||||
// name: "[message] pin a message in a channel",
|
|
||||||
// async fn() {
|
|
||||||
// await pinMessage(tempData.channelId, tempData.messageId);
|
|
||||||
// },
|
|
||||||
// ...defaultTestOptions,
|
|
||||||
// });
|
|
||||||
|
|
||||||
// Deno.test({
|
|
||||||
// name: "[message] get pinned message in a channel",
|
|
||||||
// async fn() {
|
|
||||||
// const [msg] = await getPins(tempData.channelId);
|
|
||||||
|
|
||||||
// // Assertions
|
|
||||||
// assertExists(msg);
|
|
||||||
// assertEquals(msg.id, tempData.messageId);
|
|
||||||
// assertEquals(msg.pinned, true);
|
|
||||||
// },
|
|
||||||
// ...defaultTestOptions,
|
|
||||||
// });
|
|
||||||
|
|
||||||
// Deno.test({
|
|
||||||
// name: "[message] unpin a message",
|
|
||||||
// async fn() {
|
|
||||||
// await unpinMessage(tempData.channelId, tempData.messageId);
|
|
||||||
// },
|
|
||||||
// ...defaultTestOptions,
|
|
||||||
// });
|
|
||||||
|
|
||||||
// Deno.test({
|
|
||||||
// name: "[message] add a reaction to a message",
|
|
||||||
// async fn() {
|
|
||||||
// // TODO: add tests for a guild emoji ― <:name:id>
|
|
||||||
|
|
||||||
// await addReaction(tempData.channelId, tempData.messageId, "👍");
|
|
||||||
// },
|
|
||||||
// ...defaultTestOptions,
|
|
||||||
// });
|
|
||||||
|
|
||||||
// // TODO(ayntee): add unit tests for getReactions()
|
|
||||||
|
|
||||||
// Deno.test({
|
|
||||||
// name: "[message] remove a reaction to a message",
|
|
||||||
// async fn() {
|
|
||||||
// await removeReaction(tempData.channelId, tempData.messageId, "👍");
|
|
||||||
// },
|
|
||||||
// ...defaultTestOptions,
|
|
||||||
// });
|
|
||||||
|
|
||||||
// // Cleanup
|
|
||||||
|
|
||||||
// Deno.test({
|
|
||||||
// name: "[message] delete a message by channel Id",
|
|
||||||
// async fn() {
|
|
||||||
// await deleteMessage(tempData.channelId, tempData.messageId);
|
|
||||||
// },
|
|
||||||
// ...defaultTestOptions,
|
|
||||||
// });
|
|
||||||
|
|
||||||
// Deno.test({
|
|
||||||
// name: "[channel] delete a channel in a guild",
|
|
||||||
// async fn() {
|
|
||||||
// await deleteChannel(tempData.guildId, tempData.channelId);
|
|
||||||
// },
|
|
||||||
// ...defaultTestOptions,
|
|
||||||
// });
|
|
||||||
|
|
||||||
// Deno.test({
|
|
||||||
// name: "[role] delete a role in a guild",
|
|
||||||
// async fn() {
|
|
||||||
// await deleteRole(tempData.guildId, tempData.roleId);
|
|
||||||
// },
|
|
||||||
// ...defaultTestOptions,
|
|
||||||
// });
|
|
||||||
|
|||||||
Reference in New Issue
Block a user