Я хочу сделать так, чтобы если я это сделаю [prefix] [command] это даст тот же эффект, что и [mention bot] [command] но то, как я создаю команды и аргументы, усложняет задачу:
Префикс сохраняется как var prefix = ‘!3’;
И вот как я создаю команды:
bot.on(‘message’, msg => < if (!msg.content.startsWith(prefix) || msg.author.bot) return; //the first message after ‘!13 ‘ //! let args = msg.content.toLowerCase().substring(prefix.length).split(» «); //^ //any capitalisation is allowed (ping,Ping,pIng etc.) switch(args[1]) < case ‘ping’: //if user inputs ‘!3 ping’ msg.channel.send(‘Pong!’) //send a message to the channel ‘Pong!’ >//switch (command) ends here >;//event listener ends here
user11155952 05 авг ’20 в 14:33 2020-08-05 14:33
2020-08-05 14:33
4 ответа
У вас может быть список предопределенных префиксов и перебрать его, чтобы определить, есть ли в сообщении префикс из этого списка.
let prefixList = [‘!31 ‘, ‘!asdf ‘, `> `, `> `] function hasPrefix(str)
> , > установит упоминание бота в качестве префикса.
Как создать бота для Discord? #10 | Кастомный префикс | Custom prefix | discord.py
user13624584 05 авг ’20 в 17:54 2020-08-05 17:54
2020-08-05 17:54
const startsWithPrefix = (command) => [‘!prefix1 ‘, ‘!prefix2’, , ].some(p => command.startsWith(p))
user2810565 14 мар ’21 в 18:53 2021-03-14 18:53
2021-03-14 18:53
Хороший код, но измените его с 1 на 0
Rodemil Navarro 14 май ’22 в 05:05 2022-05-14 05:05
2022-05-14 05:05
Я предполагаю, что вы используете более старую версию Discord.js, потому что если вы используете v13 message устарело и должно быть messageCreate но это то, что я использовал, когда не использовал команды косой черты.
const escapeRegex = str => str.replace(/[.*+?^$<>()|[]\]/g, ‘\$ < const prefixRegex = new RegExp(`^(>|$)\s*`) if (!prefixRegex.test(message.content)) return // checks for bot mention or prefix const [, matchedPrefix] = message.content.match(prefixRegex) const args = message.content.slice(matchedPrefix.length).trim().split(/ +/) // removes prefix or bot mention const command = args.shift().toLowerCase() // gets command from next arg if (command === ‘ping’) < msg.channel.send(‘Pong!’) >>)
Источник: stackru.com
Discord bot на Js | самый информативный гайд | Discord Js 12
Так-же увы, но я не буду объяснять, как создать бота и установить node.js, моя цель показать вам функционал discord.js, а не то, как делаются базовые действия бота.
Создаём папку скажем. на рабочем столе, и называем её любым названием, например это будет имя нашего бота! у меня это бот Pixi (Все права защищены, за использование названия вас приведут к ответственности!)
И так, для начала установим библиотеки!
npm i discord.js node-fetch
Далее после установки данных библиотек мы можем приступить к формулировке проекта!
(Устарело) Стрим: Как сделать префикс бота (Discord.js v13) #6.2
Для этого в консоль пишем:
npm init
Далее мы просто нажимаем enter, хотя можно ещё заполнить последнее поле.. Это автор! Указываем ваше имя на Английском.
Далее создаём файл config.json, index.js, и в файл config.json пишем:
И меняем на свои значения, префикс — это начальная точка команды, например $help, где $ выступает префиксом, а токен — это циферки и буквы которые можно получить в настройках бота), так-же токен никому нельзя говорить, иначе вашим ботом смогут управлять другие!
Далее в файле index.js пишем:
const Discord = require(‘discord.js’) const fs = require(‘fs’) // подключаем 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) => < // чтение файлов в папке commands if (err) console.log(err) let jsfile = files.filter(f =>f.split(‘.’).pop() === ‘js’) // файлы не имеющие расширение .js игнорируются if (jsfile.length команд`) jsfile.forEach((f, i) => < // добавляем каждый файл в коллекцию команд let props = require(`./commands/$`) client.commands.set(props.help.name, props) >) >) client.on(‘ready’, () => < console.log(`Бот $запустился`); >) client.on(‘message’, message => < let prefix = config.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)
Что мы сделали можно посмотреть в подсказках, а теперь расскажу зачем нужна эта коллекция команд!
Дело в том, что по факту можно писать команды в client.on(‘message’, message => <>, но это не правильно и именно по этому мы создаём коллекцию команд и делаем следующие действия.
После этого создаём в папке с нашим ботом ещё одну папку — commands, в этой папке и буду хранится все наши команды!
И так, давайте создадим первую команду!
Пускай это будет.. команда hi, бот будет отвечать нам привет!
И так. Создаём файл hi.js и пишем в него следующее:
Дальше запускаем бота (Переходим в консоль и идём через неё в папку с ботом и пишем node index.js) и видим.
Хорошо, у нас получилось!
Давайте.. Сделаем пинг! (Бот будет отправлять нам задержку к отправки сообщения в миллисекундах)
В папке commands создаём ещё один файл (ping.js) и там пишем:
const Discord = module.require(«discord.js»); const fs = require(«fs»); module.exports.run = async (client,message,args,prefix) => < const ping = new Date(message.createdTimestamp); const timeTaken = Date.now() — message.createdTimestamp; message.channel.send(`Пинг: $ms`); >; module.exports.help = < name: «ping» >;
Далее я хочу научить вас работать с рандомными изображениями и гифками, ну и эффектами :3
Создаём файл fox.js и пишем в него следующее:
const Discord = require(‘discord.js’) // подключение discord.js к файлу const fetch = require(‘node-fetch’) module.exports.run = (client, message, args) => < let res = fetch(‘https://some-random-api.ml/img/fox’) //Извлекаем json от сайта .then(res =>res.json()) // Просматриваем текст .then(json => < const embed = new Discord.MessageEmbed() .setColor(«RANDOM») .setTitle(`$, лисички :)`) .setImage(json.link) // Ставим лисичку картинкой! message.channel.send(embed); // Отсылаем сообщение >); > module.exports.help = < name: ‘fox’ // название команды >
Вы сможете сделать больше рандомных картинок зная сайт. Так вот!
Нажимаем например на картинку котика и пишет этот-же код, но вставляем вместо https://some-random-api.ml/img/fox -> https://some-random-api.ml/img/cat/ , а ещё меняем название команды и файла на cat.js / cat
Далее поговорим про эффекты, это будет экран wasted на аватарке пользователя дискорд!
Создаём файл wasted.js ( Вы уже знаете где) )
Теперь сделаем команду say, бот будет удалять команду пользователя и напишет то что написано собственно после самой команды! Пример: $say Привет *Сообщение удалено * И бот пишет — Привет!
В файл say.js пишем:
И. На этом всё! Спасибо за чтение данной статьи и пока!
Источник: habr.com
Смена префикса команды discord.py
Отслеживать
задан 13 мая 2020 в 8:36
miha barinov miha barinov
31 1 1 серебряный знак 7 7 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Почему вы не сделаете через БД, это удобнее и в будущем если ваш бот будет на многих серверах то список не справиться с таким объемом информации
И прочитайте документацию пожалуйста
Сначала когда бот заходит на сервер в БД заноситься дефолтний префикс
Также когда бот выходит с сервера мы удаляем сервер с БД
Здесь вы заносите перфикс сервера в БД.
После просто через функцию забираете его:
def get_prefix(bot, message): guildid = message.guild.id #айди сервера где была визвана команда prefix cursor.execute(f’SELECT prefix FROM public.»prefixDB» WHERE guild_id = »;’) prefix = cursor.fetchone() conn.commit() return prefix bot =commands.Bot(command_prefix = get_prefix, help_command=None)
Источник: ru.stackoverflow.com