USER_UPDATE & TYPING_START (#37)

* USER_UPDATE

* TYPING_START

* fix: fmt
This commit is contained in:
Marcos Susaña 2022-07-08 18:18:57 -04:00 committed by GitHub
parent a908104904
commit 9cd9d307c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 719 additions and 702 deletions

View File

@ -14,6 +14,7 @@ import type {
DiscordIntegration,
DiscordIntegrationDelete,
DiscordInteraction,
DiscordMemberWithUser,
DiscordMessage,
DiscordMessageDelete,
DiscordMessageReactionAdd,
@ -25,6 +26,7 @@ import type {
// DiscordThreadMemberUpdate,
// DiscordThreadMembersUpdate,
DiscordThreadListSync,
DiscordTypingStart,
DiscordUser,
DiscordWebhookUpdate,
} from "../discordeno/mod.ts";
@ -34,11 +36,7 @@ import type { Session } from "./Session.ts";
import type { Channel } from "./structures/channels.ts";
import type { Interaction } from "./structures/interactions/InteractionFactory.ts";
import {
ChannelFactory,
GuildChannel,
ThreadChannel,
} from "./structures/channels.ts";
import { ChannelFactory, GuildChannel, ThreadChannel } from "./structures/channels.ts";
import ThreadMember from "./structures/ThreadMember.ts";
import Member from "./structures/Member.ts";
@ -132,6 +130,18 @@ export const GUILD_ROLE_DELETE: RawHandler<DiscordGuildRoleDelete> = (session, _
session.emit("guildRoleDelete", { guildId: data.guild_id, roleId: data.role_id });
};
export const TYPING_START: RawHandler<DiscordTypingStart> = (session, _shardId, payload) => {
session.emit("typingStart", {
channelId: payload.channel_id,
guildId: payload.guild_id ? payload.guild_id : undefined,
userId: payload.user_id,
timestamp: payload.timestamp,
member: payload.guild_id
? new Member(session, payload.member as DiscordMemberWithUser, payload.guild_id)
: undefined,
});
};
export const INTERACTION_CREATE: RawHandler<DiscordInteraction> = (session, _shardId, interaction) => {
session.emit("interactionCreate", InteractionFactory.from(session, interaction));
};
@ -185,6 +195,10 @@ export const CHANNEL_PINS_UPDATE: RawHandler<DiscordChannelPinsUpdate> = (sessio
});
};
export const USER_UPDATE: RawHandler<DiscordUser> = (session, _shardId, payload) => {
session.emit("userUpdate", new User(session, payload));
};
export const WEBHOOKS_UPDATE: RawHandler<DiscordWebhookUpdate> = (session, _shardId, webhook) => {
session.emit("webhooksUpdate", { guildId: webhook.guild_id, channelId: webhook.channel_id });
};
@ -269,6 +283,7 @@ export interface Events {
"guildRoleCreate": Handler<[{ guildId: Snowflake, role: DiscordRole }]>;
"guildRoleUpdate": Handler<[{ guildId: Snowflake, role: DiscordRole }]>;
"guildRoleDelete": Handler<[{ guildId: Snowflake, roleId: Snowflake }]>;
"typingStart": Handler<[{channelId: Snowflake, guildId?: Snowflake, userId: Snowflake, timestamp: number, member?: Member}]>
"channelCreate": Handler<[Channel]>;
"channelUpdate": Handler<[Channel]>;
"channelDelete": Handler<[GuildChannel]>;
@ -283,4 +298,5 @@ export interface Events {
"integrationDelete": Handler<[{ id: Snowflake, guildId?: Snowflake, applicationId?: Snowflake }]>;
"raw": Handler<[unknown, number]>;
"webhooksUpdate": Handler<[{ guildId: Snowflake, channelId: Snowflake }]>;
"userUpdate": Handler<[User]>;
}

View File

@ -33,17 +33,16 @@ export type ComponentBuilder =
/***
* Utility type
* */
*/
export type ComponentEmoji = {
id: Snowflake;
name: string;
animated?: boolean;
};
/**
* Utility type
* */
*/
export interface PermissionsOverwrites {
id: Snowflake;
type: 0 | 1;
@ -63,7 +62,7 @@ export type ImageSize = 16 | 32 | 64 | 128 | 256 | 512 | 1024 | 2048 | 4096;
/**
* Utility functions
* */
*/
export class Util {
static formatImageURL(url: string, size: ImageSize = 128, format?: ImageFormat) {
return `${url}.${format || (url.includes("/a_") ? "gif" : "jpg")}?size=${size}`;

View File

@ -1,7 +1,7 @@
import type { Model } from "./Base.ts";
import type { Snowflake } from "../Snowflake.ts";
import type { Session } from "../Session.ts";
import type { DiscordMemberWithUser } from "../../discordeno/mod.ts"
import type { DiscordMemberWithUser } from "../../discordeno/mod.ts";
import type { ImageFormat, ImageSize } from "../Util.ts";
import type { CreateGuildBan, ModifyGuildMember } from "./guilds/Guild.ts";
import Util from "../Util.ts";

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
import type { Session } from "../../Session.ts";
import type { DiscordComponent } from "../../../discordeno/mod.ts"
import type { DiscordComponent } from "../../../discordeno/mod.ts";
import type { Component } from "./Component.ts";
import { ButtonStyles, MessageComponentTypes } from "../../../discordeno/mod.ts";
import ActionRow from "./ActionRowComponent.ts";