diff --git a/examples/ping.ts b/examples/ping.ts new file mode 100644 index 0000000..4f34419 --- /dev/null +++ b/examples/ping.ts @@ -0,0 +1,39 @@ +import { Client, Message, Intents } from '../mod.ts' + +const client = new Client(); + +client.on("ready", () => { + console.log(`Logged in as ${client.user?.tag}!`); +}); + +client.on("messageCreate", (msg: Message) => { + if(msg.content === "!ping") { + console.log("Command Used: Ping"); + msg.reply("pong!"); + } +}); + +console.log("discord.deno - ping example"); + +const token = prompt("Input Bot Token:"); +if(!token) { + console.log("No token provided"); + Deno.exit(); +} + +const intents = prompt("Input Intents (0 = All, 1 = Presence, 2 = Server Members):"); +if(!intents || !["0", "1", "2"].includes(intents)) { + console.log("No intents provided"); + Deno.exit(); +} + +let ints; +if(intents == "0") { + ints = Intents.All; +} else if(intents == "1") { + ints = Intents.Presence; +} else { + ints = Intents.GuildMembers; +} + +client.connect(token, ints); \ No newline at end of file diff --git a/mod.ts b/mod.ts index f38453a..51edcf9 100644 --- a/mod.ts +++ b/mod.ts @@ -52,4 +52,5 @@ export * from './src/types/template.ts' export * from './src/types/user.ts' export * from './src/types/voice.ts' export * from './src/types/webhook.ts' -export * from './src/utils/collection.ts' \ No newline at end of file +export * from './src/utils/collection.ts' +export * from './src/utils/intents.ts' \ No newline at end of file diff --git a/src/test/index.ts b/src/test/index.ts index bc77225..025e236 100644 --- a/src/test/index.ts +++ b/src/test/index.ts @@ -1,39 +1,25 @@ -// import { Client } from '../models/client.ts' -// import { GatewayIntents } from '../types/gateway.ts' +import { Client, GuildTextChannel, GatewayIntents, Message, DefaultCacheAdapter, ClientPresence, Member, Role, GuildChannel, TextChannel, Embed, Guild } from '../../mod.ts'; +import { Intents } from "../utils/intents.ts"; import { TOKEN } from './config.ts' -// import { Message } from "../structures/message.ts" -// import { DefaultCacheAdapter } from "../models/cacheAdapter.ts" -// import { ClientPresence } from "../structures/presence.ts" -// import { Member } from "../structures/member.ts" -// import { Role } from "../structures/role.ts" -// import { GuildChannel } from "../managers/guildChannels.ts" -// import { TextChannel } from "../structures/textChannel.ts" -// import { Embed } from "../structures/embed.ts" -// import { Guild } from "../structures/guild.ts" -import { Client, GatewayIntents, Message, DefaultCacheAdapter, ClientPresence, Member, Role, GuildChannel, TextChannel, Embed, Guild } from '../../mod.ts'; -const bot = new Client({ +const client = new Client({ presence: new ClientPresence({ activity: { - name: "Testing", + name: "Pokémon Sword", type: 'COMPETING' } }), }) -bot.setAdapter(new DefaultCacheAdapter(bot)) +client.setAdapter(new DefaultCacheAdapter(client)) -bot.on('ready', () => { - console.log(`[Login] Logged in as ${bot.user?.tag}!`) - bot.setPresence({ - name: "Test - Ready", - type: 'COMPETING' - }) +client.on('ready', () => { + console.log(`[Login] Logged in as ${client.user?.tag}!`) }) -bot.on('debug', console.log) +client.on('debug', console.log) -bot.on('channelPinsUpdate', (before: TextChannel, after: TextChannel) => { +client.on('channelPinsUpdate', (before: TextChannel, after: TextChannel) => { console.log(before.send('', { embed: new Embed({ title: 'Test', @@ -42,10 +28,19 @@ bot.on('channelPinsUpdate', (before: TextChannel, after: TextChannel) => { })) }) -bot.on('messageCreate', async (msg: Message) => { +client.on('channelUpdate', (before: GuildTextChannel, after: GuildTextChannel) => { + console.log(before.send('', { + embed: new Embed({ + title: 'Channel Update', + description: `Name Before: ${before.name}\nName After: ${after.name}` + }) + })) +}) + +client.on('messageCreate', async (msg: Message) => { if (msg.author.bot === true) return if (msg.content === "!ping") { - msg.reply(`Pong! Ping: ${bot.ping}ms`) + msg.reply(`Pong! Ping: ${client.ping}ms`) } else if (msg.content === "!members") { const col = await msg.guild?.members.collection() const data = col?.array().map((c: Member, i: number) => { @@ -72,20 +67,4 @@ bot.on('messageCreate', async (msg: Message) => { } }) -bot.connect(TOKEN, [ - GatewayIntents.GUILD_MEMBERS, - GatewayIntents.GUILD_PRESENCES, - GatewayIntents.GUILD_MESSAGES, - GatewayIntents.DIRECT_MESSAGES, - GatewayIntents.DIRECT_MESSAGE_REACTIONS, - GatewayIntents.DIRECT_MESSAGE_TYPING, - GatewayIntents.GUILDS, - GatewayIntents.GUILD_BANS, - GatewayIntents.GUILD_EMOJIS, - GatewayIntents.GUILD_INTEGRATIONS, - GatewayIntents.GUILD_INVITES, - GatewayIntents.GUILD_MESSAGE_REACTIONS, - GatewayIntents.GUILD_MESSAGE_TYPING, - GatewayIntents.GUILD_VOICE_STATES, - GatewayIntents.GUILD_WEBHOOKS -]) +client.connect(TOKEN, Intents.All) diff --git a/src/utils/intents.ts b/src/utils/intents.ts new file mode 100644 index 0000000..844618a --- /dev/null +++ b/src/utils/intents.ts @@ -0,0 +1,55 @@ +import { GatewayIntents } from "../types/gateway.ts"; + +export class Intents { + static All: number[] = [ + GatewayIntents.GUILD_MEMBERS, + GatewayIntents.GUILD_PRESENCES, + GatewayIntents.GUILD_MESSAGES, + GatewayIntents.DIRECT_MESSAGES, + GatewayIntents.DIRECT_MESSAGE_REACTIONS, + GatewayIntents.DIRECT_MESSAGE_TYPING, + GatewayIntents.GUILDS, + GatewayIntents.GUILD_BANS, + GatewayIntents.GUILD_EMOJIS, + GatewayIntents.GUILD_INTEGRATIONS, + GatewayIntents.GUILD_INVITES, + GatewayIntents.GUILD_MESSAGE_REACTIONS, + GatewayIntents.GUILD_MESSAGE_TYPING, + GatewayIntents.GUILD_VOICE_STATES, + GatewayIntents.GUILD_WEBHOOKS + ]; + + static Presence: number[] = [ + GatewayIntents.GUILD_PRESENCES, + GatewayIntents.GUILD_MESSAGES, + GatewayIntents.DIRECT_MESSAGES, + GatewayIntents.DIRECT_MESSAGE_REACTIONS, + GatewayIntents.DIRECT_MESSAGE_TYPING, + GatewayIntents.GUILDS, + GatewayIntents.GUILD_BANS, + GatewayIntents.GUILD_EMOJIS, + GatewayIntents.GUILD_INTEGRATIONS, + GatewayIntents.GUILD_INVITES, + GatewayIntents.GUILD_MESSAGE_REACTIONS, + GatewayIntents.GUILD_MESSAGE_TYPING, + GatewayIntents.GUILD_VOICE_STATES, + GatewayIntents.GUILD_WEBHOOKS + ]; + + static GuildMembers: number[] = [ + GatewayIntents.GUILD_MEMBERS, + GatewayIntents.GUILD_MESSAGES, + GatewayIntents.DIRECT_MESSAGES, + GatewayIntents.DIRECT_MESSAGE_REACTIONS, + GatewayIntents.DIRECT_MESSAGE_TYPING, + GatewayIntents.GUILDS, + GatewayIntents.GUILD_BANS, + GatewayIntents.GUILD_EMOJIS, + GatewayIntents.GUILD_INTEGRATIONS, + GatewayIntents.GUILD_INVITES, + GatewayIntents.GUILD_MESSAGE_REACTIONS, + GatewayIntents.GUILD_MESSAGE_TYPING, + GatewayIntents.GUILD_VOICE_STATES, + GatewayIntents.GUILD_WEBHOOKS + ]; +} \ No newline at end of file