harmony/src/test/index.ts

108 lines
2.8 KiB
TypeScript
Raw Normal View History

2020-12-02 12:29:52 +00:00
import {
Client,
Intents,
Message,
Member,
Role,
GuildChannel,
Embed,
Guild,
EveryChannelTypes,
ChannelTypes,
GuildTextChannel
} from '../../mod.ts'
import { TOKEN } from './config.ts'
const client = new Client({
2020-12-17 01:20:06 +00:00
// clientProperties: {
// browser: 'Discord iOS'
// }
// bot: false,
// cache: new RedisCacheAdapter({
// hostname: '127.0.0.1',
// port: 6379
// }) // Defaults to in-memory Caching
2020-11-02 07:27:14 +00:00
})
client.on('ready', () => {
console.log(`[Login] Logged in as ${client.user?.tag}!`)
})
client.on('debug', console.log)
2020-12-02 12:29:52 +00:00
client.on('channelUpdate', (b: EveryChannelTypes, a: EveryChannelTypes) => {
if (b.type === ChannelTypes.GUILD_TEXT) {
const before = (b as unknown) as GuildTextChannel
const after = (a as unknown) as 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) => {
2020-11-03 07:12:22 +00:00
if (msg.author.bot === true) return
2020-12-17 01:20:06 +00:00
if (msg.stickers !== undefined) {
console.log(
`${msg.author.tag}: (Sticker)${msg.stickers.map(
(sticker) => `Name: ${sticker.name}, Tags: ${sticker.tags}`
)}`
)
} else {
console.log(`${msg.author.tag}: ${msg.content}`)
}
if (msg.content === '!ping') {
msg.reply(`Pong! Ping: ${client.ping}ms`)
} else if (msg.content === '!members') {
2020-11-03 07:12:22 +00:00
const col = await msg.guild?.members.collection()
2020-12-02 12:29:52 +00:00
const data = col
?.array()
.map((c: Member, i: number) => {
return `${i + 1}. ${c.user.tag}`
})
.join('\n') as string
msg.channel.send('Member List:\n' + data)
} else if (msg.content === '!guilds') {
2020-11-03 07:12:22 +00:00
const guilds = await msg.client.guilds.collection()
2020-12-02 12:29:52 +00:00
msg.channel.send(
'Guild List:\n' +
(guilds
.array()
.map((c: Guild, i: number) => {
return `${i + 1}. ${c.name} - ${c.memberCount} members`
})
.join('\n') as string)
)
} else if (msg.content === '!roles') {
2020-11-03 07:12:22 +00:00
const col = await msg.guild?.roles.collection()
2020-12-02 12:29:52 +00:00
const data = col
?.array()
.map((c: Role, i: number) => {
return `${i + 1}. ${c.name}`
})
.join('\n') as string
msg.channel.send('Roles List:\n' + data)
} else if (msg.content === '!channels') {
2020-11-03 07:12:22 +00:00
const col = await msg.guild?.channels.array()
2020-12-02 12:29:52 +00:00
const data = col
?.map((c: GuildChannel, i: number) => {
return `${i + 1}. ${c.name}`
})
.join('\n') as string
msg.channel.send('Channels List:\n' + data)
}
})
client.connect(TOKEN, Intents.All)
// OLD: Was a way to reproduce reconnect infinite loop
// setTimeout(() => {
// console.log('[DEBUG] Reconnect')
// client.gateway?.reconnect()
// }, 1000 * 4)