Skip to content

Commit

Permalink
Refactor server files
Browse files Browse the repository at this point in the history
  • Loading branch information
ebma committed May 10, 2023
1 parent e7a3a58 commit d951888
Show file tree
Hide file tree
Showing 15 changed files with 142 additions and 125 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
"async": "^3.2.4",
"bufferutil": "^4.0.7",
"cors": "^2.8.5",
"discord-akairo": "^8.1.0",
"discord-akairo": "discord-akairo/discord-akairo",
"discord-ytdl-core": "^5.0.4",
"discord.js": "^14.11.0",
"dotenv": "^16.0.3",
Expand Down
23 changes: 18 additions & 5 deletions src/bot/MyClient.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,30 @@
import { AkairoClient, CommandHandler, InhibitorHandler, ListenerHandler } from "discord-akairo"
import config from "../utils/config"
import { GatewayIntentBits } from "discord.js"

export class MyClient extends AkairoClient {
commandHandler: CommandHandler
inhibitorHandler: InhibitorHandler
listenerHandler: ListenerHandler

constructor() {
const intents = [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.GuildMembers,
GatewayIntentBits.GuildVoiceStates,
GatewayIntentBits.GuildMessageReactions,
GatewayIntentBits.DirectMessages,
GatewayIntentBits.DirectMessageReactions,
GatewayIntentBits.MessageContent
]
super(
{
ownerID: config.OWNER_ID
ownerID: config.OWNER_ID,
},
{}
{
intents,
}
)

this.commandHandler = new CommandHandler(this, {
Expand All @@ -20,13 +33,13 @@ export class MyClient extends AkairoClient {
directory: __dirname + "/commands/",
handleEdits: true,
commandUtil: true,
prefix: "!"
prefix: "!",
})
this.inhibitorHandler = new InhibitorHandler(this, {
directory: __dirname + "/inhibitors/"
directory: __dirname + "/inhibitors/",
})
this.listenerHandler = new ListenerHandler(this, {
directory: __dirname + "/listeners/"
directory: __dirname + "/listeners/",
})

this.commandHandler.loadAll()
Expand Down
4 changes: 2 additions & 2 deletions src/bot/commands/ban.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ class BanCommand extends Command {
type: "member"
}
],
clientPermissions: ["BAN_MEMBERS"],
userPermissions: ["BAN_MEMBERS"],
clientPermissions: ["BanMembers"],
userPermissions: ["BanMembers"],
channel: "guild"
})
}
Expand Down
8 changes: 4 additions & 4 deletions src/bot/commands/music/MusicCommand.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Command } from "discord-akairo"
import _ from "lodash"
import { Guild, GuildMember, Message, TextChannel, MessageEmbed } from "discord.js"
import { Guild, GuildMember, Message, TextChannel, Embed, EmbedBuilder } from "discord.js";
import MusicPlayer from "../../../libs/MusicPlayer"
import MusicPlayerManager from "../../../libs/MusicPlayerManager"
import { trackError } from "../../../utils/trackError"
Expand Down Expand Up @@ -66,11 +66,11 @@ export abstract class MusicCommand extends Command {
{ leading: false, trailing: true }
)

sendMessageToChannel(message: string | MessageEmbed) {
sendMessageToChannel(message: string | EmbedBuilder) {
const defaultChannel = this.message.channel

if (message instanceof MessageEmbed) {
defaultChannel.send(message)
if (message instanceof EmbedBuilder) {
defaultChannel.send({ embeds: [message]})
} else {
messageQueue.push(message)
this.sendStringMessage(defaultChannel)
Expand Down
4 changes: 2 additions & 2 deletions src/bot/commands/music/play.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { MessageEmbed } from "discord.js"
import Youtube from "../../../libs/Youtube"
import Spotify from "../../../libs/Spotify"
import { createEmbedForTrack, createEmbedForTracks, createEmbedsForSpotifyPlaylist } from "../../../utils/embeds"
import MusicPlayer from "../../../libs/MusicPlayer"
import { SpotifyHelper } from "../../../shared/utils/helpers"
import { createAndSavePlaylistModel, createAndSaveTrackModel } from "../../../db/models/helper"
import { Embed, EmbedBuilder } from "discord.js";

async function getTrackFromYoutubeVideo(videoURL: string) {
const track = await Youtube.createTrackFromURL(videoURL)
Expand Down Expand Up @@ -32,7 +32,7 @@ async function handleSearch(searchTerm: string) {
}

export async function handlePlay(input: string, guildID: GuildID, musicPlayer: MusicPlayer) {
let reply: MessageEmbed | string = ""
let reply: EmbedBuilder | string = ""

if (Youtube.describesYoutubePlaylist(input)) {
const playlistID = new URL(input).searchParams.get("list")
Expand Down
5 changes: 1 addition & 4 deletions src/db/connection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@ import mongoose from "mongoose"

export function connect(databasePath: string) {
mongoose.connect(databasePath, {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true,
useFindAndModify: false
autoIndex: true,
})

const db = mongoose.connection
Expand Down
4 changes: 2 additions & 2 deletions src/libs/ActivityManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ class ActivityManager {

setPlaying(content: string, url?: string) {
if (this.user) {
this.user.setPresence({ activity: { type: "LISTENING", name: content, url }, afk: false, status: "online" })
this.user.setPresence({ activities: [{ type: 2, name: content, url }], afk: false, status: "online" })
}
}

setIdle() {
if (this.user) {
this.user.setPresence({})
this.user.setPresence({ status: "idle" })
}
}
}
Expand Down
11 changes: 8 additions & 3 deletions src/libs/MusicPlayerManager.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,24 @@
import { VoiceChannel } from "discord.js"
import { VoiceBasedChannel } from "discord.js"
import { trackError } from "../utils/trackError"
import MusicPlayer from "./MusicPlayer"
import MusicPlayerObserver from "./MusicPlayerObserver"
import StreamManager from "./StreamManager"
import { joinVoiceChannel } from "@discordjs/voice"

export class MusicPlayerManager {
private musicPlayerMap: { [key in GuildID]: MusicPlayer } = {}
private musicPlayerObserverMap: { [key in GuildID]: MusicPlayerObserver } = {}

async createPlayerFor(guildID: GuildID, channel: VoiceChannel): Promise<MusicPlayer> {
async createPlayerFor(guildID: GuildID, channel: VoiceBasedChannel): Promise<MusicPlayer> {
if (this.musicPlayerMap[guildID] !== undefined && !this.musicPlayerMap[guildID].destroyed) {
throw new Error(`Player already exists for guild ${guildID}`)
}

const connection = await channel.join()
const connection = joinVoiceChannel({
channelId: channel.id,
guildId: channel.guild.id,
adapterCreator: channel.guild.voiceAdapterCreator,
})
const musicPlayer = new MusicPlayer(new StreamManager(connection))
this.musicPlayerMap[guildID] = musicPlayer

Expand Down
Loading

0 comments on commit d951888

Please sign in to comment.