@Vlad808
Люблю кодить на Javascript

Как сменить префикс бота дискорд командой используя библеотеку discord.js?

Как сменить префикс бота командой на сервере дискорд? По типу +prefix !. И далее префиксом бота является !. Мой main файл:
const Discord = require('discord.js')
const fs = require('fs') 
const client = new Discord.Client()
const config = require('./config.json')
const fetch = require('node-fetch')
client.commands = new Discord.Collection() 

fs.readdir('./commands', (err, files) => { 
    if (err) console.log(err)

    let jsfile = files.filter(f => f.split('.').pop() === 'js') 
    if (jsfile.length <= 0) return message.channel.send("Команды не найдены!") 

    console.log(`Загружено ${jsfile.length} команд`)
    jsfile.forEach((f, i) => { 
        let props = require(`./commands/${f}`)
        client.commands.set(props.help.name, props)
    })
})

client.on('ready', () => {
    console.log(`Бот ${client.user.username} запустился`);
    client.user.setPresence({
        status: 'online',
        activity: {
            type: 'STREAMING',
            name: 'YouTube',
        }
    })
})

client.on('message', message => {
    let prefix = config.prefix
    let guildPrefix = prefix.getPrefix(message.guild.id);
    if (!guildPrefix) guildPrefix = prefix;
    
    if (!message.content.startsWith(prefix) || message.author.bot) return;
    let messageArray = message.content.split(' ') 
    let command = messageArray[0] 
    let args = messageArray.slice(1) 

    let command_file = client.commands.get(command.slice(prefix.length)) 
    if (command_file) command_file.run(client, message, args, prefix)
})

client.login(config.token)
  • Вопрос задан
  • 2152 просмотра
Решения вопроса 1
AlmondPark33609
@AlmondPark33609
Занимаюсь кодингом как хобби
А теперь самый легкий и у меня рабочий способ: создаём в папке бота файл prefixes.json. Затем, в основном файле бота добавляем к основе следующее:
// вверху со всеми импортами
let fs = require("fs")
let prefixes = require("./prefixes.json")
// ниже
let sid = message.guild.id
if(!prefixes[sid]){
   prefixes[sid] ={
       prefix:"любой префикс по умолчанию",
   };
};
let prefix = prefixes[sid].prefix
fs.writeFile("./prefixes.json",JSON.stringify(prefixes),(err)=>{
      if (err) console.log(err)

}

ОБЯЗАТЕЛЬНО в файле prefixes.json впишите {} и сохраните перед запуском! Остальное будет вписано автоматически.
Далее создаём команду (у меня в отдельном файле), к основе добавляем:
// вверху со всеми импортами
let fs = require("fs")
let prefixes = require("./prefixes.json")
// ниже
let sid = message.guild.id
prefixes[sid] ={
   prefix:args[0]
}
fs.writeFile("./prefixes.json",JSON.stringify(prefixes),(err)=>{
     if (err) console.log(err)
}

Вот и всё ;) теперь мы сможем менять префикс командой. Название команды и как её оформить думаю разберетесь) Также в основном файле не забудьте убрать импорт префикса из конфига бота.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@hto_on
В файле config.json строка prefix
Ответ написан
@Azperin
Дилетант
Практически прям соседний вопрос Как изменять конфиг бота командами в Discord?
Просто меняй в своем конфиге
let prefix = '!';
let currencySymbol = '@';
discordBot.on('message', (msg) => {
	let [ command, ...args ] = msg.content.split(' ');
	
	switch(true) {
		case(command === `{ $prefix }set-prefix`):
			prefix = args[0] ?? prefix;
			break;
		
		case(command === `{ $prefix }set-currency`):
			currencySymbol = args[0] ?? currencySymbol;
			break;		
			
		default: break;
	};
	
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы