Skip to content

Commit bd91a9f

Browse files
committed
😎 v1.9.9 | Düğme ve Seç menülerde referans taşıyabilme.
😎 v1.9.9 | Düğme ve Seç menülerde referans taşıyabilme. - Düğme ve Seç menülerde referans taşıyabilme. (toJSON()) - Yeni discord.js olayları eklendi.
1 parent 57ee00b commit bd91a9f

File tree

9 files changed

+43
-21
lines changed

9 files changed

+43
-21
lines changed

index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ globalThis.Underline = {
2424
events,
2525
locales,
2626
utils,
27+
_references: new Discord.Collection(),
2728
Interaction: require('./types/Interaction'),
2829
Event: require('./types/Event'),
2930
SlashCommand: require("./types/SlashCommand"),
@@ -332,10 +333,11 @@ client.on("interactionCreate", async (interaction) => {
332333
let data = [];
333334

334335
if (interaction.isButton() || interaction.isSelectMenu()) {
335-
data = interaction.customId.split("§");
336+
data = interaction.customId.split("");
336337
interaction.customId = data.shift();
337338
data = data.map(key => {
338-
if (key.startsWith("©") || !isNaN(key.slice(1))) return Number(key.slice(1));
339+
if (key.startsWith("π") || !isNaN(key.slice(1))) return Number(key.slice(1));
340+
if (key.startsWith("¤")) return Underline._references.get(key.slice(1)) || null;
339341
return key;
340342
})
341343
}

interactions/butonYolla.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ module.exports = new Underline.SlashCommand({
88
{
99
type: "ACTION_ROW",
1010
components: [
11-
Underline.interactions.get("ornek").toJSON([inter.user.id])
11+
Underline.interactions.get("ornek").toJSON([inter.user])
1212
]
1313
}
1414
]

interactions/ornekButton.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,13 @@ module.exports = new Underline.Button({
33
id: "ornek",
44
description: "...",
55
onInteraction(inter, other) {
6-
7-
inter.reply(`düğme sahibi ${other.data[0]}`)
6+
let user = other.data[0];
7+
console.log(user);
8+
if (!user) return inter.reply(`tıklayanı bulamadım.`);
9+
inter.reply(`düğme sahibi: ${user.tag} ${user.id}`);
10+
// Eğer düğmeye tıklayan kişi düğmenin sahibi ise sahip referansı ram'den sil.
11+
// bu sayede tekrardan tıklayamayacak.
12+
if (user.id == inter.user.id) user.$unRef();
813
},
914
perms: {
1015
bot: ["CREATE_INSTANT_INVITE"],

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"@types/recursive-readdir": "^2.2.0"
1919
},
2020
"name": "armagan-basit-altyapi",
21-
"version": "1.9.8",
21+
"version": "1.9.9",
2222
"description": "Kullanımı basit ancak bir yandanda içinde birçek özellik barındıran discord bot altyapısı.",
2323
"main": "index.js",
2424
"repository": {

readme.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Basit Altyapı (Versiyon 1.9.8) (v13.x)
1+
# Basit Altyapı (Versiyon 1.9.9) (v13.x)
22

33
Kullanımı basit ancak bir yandanda içinde birçek özellik barındıran discord bot altyapısı. Sık sık güncelleme alıyor. (Slash Commands)
44

@@ -33,7 +33,7 @@ Kullanımı basit ancak bir yandanda içinde birçek özellik barındıran disco
3333
- ✅ Kolay bir şekilde interaksiyon öncesi işlem ekleyebilme.
3434
- ✅ Kolay bir şekilde interaksiyon veya olay altyapsı oluşturabilme.
3535
- ✅ Kolayca dosya devre dışı bırakılabilme. İsmi tire (-) ile başlayan interaksiyonlar ve olaylar umursanmaz.
36-
- ✅ Düğme ve Seç menülerda değer taşıyabilme.
36+
- ✅ Düğme ve Seç menülerde değer/referans taşıyabilme.
3737
- ✅ Other objesi ile her işlemden önce değer belirtebilme.
3838
- ✅ Full otomatik dil desteği. Komutu kullanan kişinin dilini otomatik belirleme.
3939

types/Button.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const { MessageButton } = require("discord.js");
22
const Interaction = require("./Interaction");
3+
const stuffs = require("stuffs");
34

45
class Button extends Interaction {
56
/** @param {Interaction.TOmittedInteraction & Interaction.Button} arg */
@@ -12,18 +13,23 @@ class Button extends Interaction {
1213
}
1314
isButton() { return true; }
1415
/**
15-
* @param {Array<string | number>} data
16+
* @param {Array<string | number | any>} data
1617
* @returns {MessageSelectMenu}
1718
*/
1819
toJSON(data = []) {
1920
if (!Array.isArray(data)) throw Error(`SelectMenu#toJSON data type must be an array.`);
2021
data = data.map((key) => {
21-
if (typeof key !== "string" && typeof key !== "number") throw Error(`SelectMenu#toJSON data type must be an array of strings or numbers.`);
22-
if (typeof key === "number") return ${key}`;
23-
return key;
22+
if (typeof key === "string") return key;
23+
if (typeof key === "number") return ${key}`;
24+
let referenceId = stuffs.randomString(16);
25+
key.$unRef = () => {
26+
return Underline._references.delete(referenceId);
27+
}
28+
Underline._references.set(referenceId, key);
29+
return ${referenceId}`;
2430
});
2531
data.unshift(this.id);
26-
let customId = data.join("§");
32+
let customId = data.join("");
2733
if (customId.length > 100) throw Error(`SelectMenu#toJSON id and data length must be less than 100.`);
2834
let button = new MessageButton()
2935
.setCustomId(customId)

types/Event.d.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,7 @@ class BaseEvent {
5454

5555
export = BaseEvent;
5656

57-
58-
type TEvents = ApplicationInteractionCreateEvent | ApplicationInteractionDeleteEvent | ApplicationInteractionUpdateEvent | ChannelCreateEvent | ChannelDeleteEvent | ChannelPinsUpdateEvent | ChannelUpdateEvent | DebugEvent | WarnEvent | EmojiCreateEvent | EmojiDeleteEvent | EmojiUpdateEvent | ErrorEvent | GuildBanAddEvent | GuildBanRemoveEvent | GuildCreateEvent | GuildDeleteEvent | GuildUnavailableEvent | GuildIntegrationsUpdateEvent | GuildMemberAddEvent | GuildMemberAvailableEvent | GuildMemberRemoveEvent | GuildMembersChunkEvent | GuildMemberUpdateEvent | GuildUpdateEvent | InviteCreateEvent | InviteDeleteEvent | MessageEvent | MessageCreateEvent | MessageDeleteEvent | MessageReactionRemoveAllEvent | MessageReactionRemoveEmojiEvent | MessageDeleteBulkEvent | MessageReactionAddEvent | MessageReactionRemoveEvent | MessageUpdateEvent | PresenceUpdateEvent | RateLimitEvent | InvalidRequestWarningEvent | ReadyEvent | RoleCreateEvent | RoleDeleteEvent | RoleUpdateEvent | ThreadCreateEvent | ThreadDeleteEvent | ThreadListSyncEvent | ThreadMemberUpdateEvent | ThreadMembersUpdateEvent | ThreadUpdateEvent | TypingStartEvent | UserUpdateEvent | VoiceStateUpdateEvent | WebhookUpdateEvent | InteractionEvent | InteractionCreateEvent | ShardDisconnectEvent | ShardErrorEvent | ShardReadyEvent | ShardReconnectingEvent | ShardResumeEvent | StageInstanceCreateEvent | StageInstanceUpdateEvent | StageInstanceDeleteEvent | StickerCreateEvent | StickerDeleteEvent | StickerUpdateEvent;
57+
type TEvents = ApplicationInteractionCreateEvent | ApplicationInteractionDeleteEvent | ApplicationInteractionUpdateEvent | ChannelCreateEvent | ChannelDeleteEvent | ChannelPinsUpdateEvent | ChannelUpdateEvent | DebugEvent | WarnEvent | EmojiCreateEvent | EmojiDeleteEvent | EmojiUpdateEvent | ErrorEvent | GuildBanAddEvent | GuildBanRemoveEvent | GuildCreateEvent | GuildDeleteEvent | GuildUnavailableEvent | GuildIntegrationsUpdateEvent | GuildMemberAddEvent | GuildMemberAvailableEvent | GuildMemberRemoveEvent | GuildMembersChunkEvent | GuildMemberUpdateEvent | GuildUpdateEvent | InviteCreateEvent | InviteDeleteEvent | MessageEvent | MessageCreateEvent | MessageDeleteEvent | MessageReactionRemoveAllEvent | MessageReactionRemoveEmojiEvent | MessageDeleteBulkEvent | MessageReactionAddEvent | MessageReactionRemoveEvent | MessageUpdateEvent | PresenceUpdateEvent | RateLimitEvent | InvalidRequestWarningEvent | ReadyEvent | RoleCreateEvent | RoleDeleteEvent | RoleUpdateEvent | ThreadCreateEvent | ThreadDeleteEvent | ThreadListSyncEvent | ThreadMemberUpdateEvent | ThreadMembersUpdateEvent | ThreadUpdateEvent | TypingStartEvent | UserUpdateEvent | VoiceStateUpdateEvent | WebhookUpdateEvent | InteractionEvent | InteractionCreateEvent | ShardDisconnectEvent | ShardErrorEvent | ShardReadyEvent | ShardReconnectingEvent | ShardResumeEvent | StageInstanceCreateEvent | StageInstanceUpdateEvent | StageInstanceDeleteEvent | StickerCreateEvent | StickerDeleteEvent | StickerUpdateEvent | ScheduledEventCreateEvent | ScheduledEventDeleteEvent | ScheduledEventUpdateEvent | ScheduledEventUserAddEvent;
5958

6059
interface ApplicationInteractionCreateEvent { eventName: "applicationInteractionCreate"; onEvent: (command: ApplicationInteraction, other: IOther) => any };
6160
interface ApplicationInteractionDeleteEvent { eventName: "applicationInteractionDelete"; onEvent: (command: ApplicationInteraction, other: IOther) => any };
@@ -122,4 +121,8 @@ interface StageInstanceUpdateEvent { eventName: "stageInstanceUpdate"; onEvent:
122121
interface StageInstanceDeleteEvent { eventName: "stageInstanceDelete"; onEvent: (stageInstance: StageInstance, other: IOther) => any };
123122
interface StickerCreateEvent { eventName: "stickerCreate"; onEvent: (sticker: Sticker, other: IOther) => any };
124123
interface StickerDeleteEvent { eventName: "stickerDelete"; onEvent: (sticker: Sticker, other: IOther) => any };
125-
interface StickerUpdateEvent { eventName: "stickerUpdate"; onEvent: (oldSticker: Sticker, newSticker: Sticker, other: IOther) => any };
124+
interface StickerUpdateEvent { eventName: "stickerUpdate"; onEvent: (oldSticker: Sticker, newSticker: Sticker, other: IOther) => any };
125+
interface ScheduledEventCreateEvent { eventName: "guildScheduledEventCreate"; onEvent: (event: GuildScheduledEvent<"SCHEDULED" | "ACTIVE" | "COMPLETED" | "CANCELED">, other: IOther) => any };
126+
interface ScheduledEventDeleteEvent { eventName: "guildScheduledEventDelete"; onEvent: (event: GuildScheduledEvent<"SCHEDULED" | "ACTIVE" | "COMPLETED" | "CANCELED">, other: IOther) => any };
127+
interface ScheduledEventUpdateEvent { eventName: "guildScheduledEventUpdate"; onEvent: (oldEvent: GuildScheduledEvent<"SCHEDULED" | "ACTIVE" | "COMPLETED" | "CANCELED">, newEvent: GuildScheduledEvent<"SCHEDULED" | "ACTIVE" | "COMPLETED" | "CANCELED">, other: IOther) => any };
128+
interface ScheduledEventUserAddEvent { eventName: "guildScheduledEventUserAdd"; onEvent: (event: GuildScheduledEvent<"SCHEDULED" | "ACTIVE" | "COMPLETED" | "CANCELED">, user: User, other: IOther) => any };

types/Interaction.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ type cooldownType = "user" | "member" | "channel" | "guild" | "message" | "any";
8282
export interface IOther {
8383
setCoolDown(durations: number, type: cooldownType): void,
8484
locale: import("./Locale").Data,
85-
data: (string | number)[],
85+
data: (string | number | { [string | number]: any, $unRef(): boolean })[],
8686
[key: string | number]: any
8787
}
8888

types/SelectMenu.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const { MessageSelectMenu } = require("discord.js");
22
const Interaction = require("./Interaction");
3+
const stuffs = require("stuffs");
34

45
class SelectMenu extends Interaction {
56
/** @param {Interaction.TOmittedInteraction & Interaction.SelectMenu} arg */
@@ -22,12 +23,17 @@ class SelectMenu extends Interaction {
2223
toJSON(data = []) {
2324
if (!Array.isArray(data)) throw Error(`SelectMenu#toJSON data type must be an array.`);
2425
data = data.map((key) => {
25-
if (typeof key != "string" && typeof key != "number") throw Error(`SelectMenu#toJSON data type must be an array of strings or numbers.`);
26-
if (typeof key === "number") return ${key}`;
27-
return key;
26+
if (typeof key === "string") return key;
27+
if (typeof key === "number") return ${key}`;
28+
let referenceId = stuffs.randomString(16);
29+
key.$unRef = () => {
30+
return Underline._references.delete(referenceId);
31+
}
32+
Underline._references.set(referenceId, key);
33+
return ${referenceId}`;
2834
});
2935
data.unshift(this.id);
30-
let customId = data.join("§");
36+
let customId = data.join("");
3137
if (customId.length > 100) throw Error(`SelectMenu#toJSON id and data length must be less than 100.`);
3238
let menu = new MessageSelectMenu()
3339
.addOptions(this.options?.choices ?? [])

0 commit comments

Comments
 (0)