Хочу сделать бота который меняет баннер и добавляет текст участников в Дискорд сервере. Код не работает. Как сделать?
Это фулл код, никаких ошибок в консоли нет, но баннер не меняет.
client = new Discord.Client(),
disbut = require('discord-buttons');
disbut(client);
const { MessageEmbed } = require('discord.js');
var fs = require('fs')
var path = require('path')
var Canvas = require('canvas')
var updateBanner = false;
function fontFile(name) {
return path.join(__dirname, '/', name)
}
Canvas.registerFont(fontFile('Acrom.ttf'), { family: 'Acrom Light' })
const settings = {
token: "",
prefix: "!",
adminID: "373401024024543252",
embed_color: "#2f3136",
};
client.on('ready', () => {
client.user.setStatus('idle')
console.log(`Logged in as ${client.user.tag}!`);
client.user.setPresence({
status: 'online',
activity: {
type: 'WATCHING',
name: ' за SAVAGE',
},
});
doveryaCount = client.guilds.cache.get('866048794272595999').roles.cache.get('882263306650406973').members.size;
client.guilds.cache.get('866048794272595999').channels.cache.get('884838392125333626').setName(`?・Нам доверяют: ${doveryaCount}`);
setInterval(() => {
if (updateBanner == true) {
var userCount = client.guilds.cache.get('866048794272595999').memberCount;
var canvas = Canvas.createCanvas(960, 540);
var ctx = canvas.getContext('2d');
var Image = Canvas.Image;
var img = new Image();
img.src = 'dm.png';
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
ctx.fillStyle = 'white';
ctx.textAlign = 'center';
ctx.font = '40pt Acrom Light';
ctx.fillText(userCount, 500, 500)
canvas.createPNGStream().pipe(fs.createWriteStream(path.join(__dirname, 'font.png')))
client.guilds.cache.get('866048794272595999').setBanner("font.png");
console.log(`Загрузка изображения`);
updateBanner = false;
} else console.log('Обновление не требуется!');
}, 600000);
setInterval(() => {
var userCount = client.guilds.cache.get('866048794272595999').memberCount;
console.log('\x1b[33m%s\x1b[0m', `На сервере: ${userCount} участников.`)
}, 30000);
});
client.on('guildMemberAdd', function(member) {
let embed = new MessageEmbed();
embed.setTitle('Новый пользователь!')
.setColor('#2f3136') //Цвет полоски
.setDescription(member.user.tag + ' присоединился к серверу!')
.setThumbnail(member.user.avatarURL())
.setFooter('Всего пользователей: ' + member.guild.memberCount)
const channel = member.guild.channels.cache.get('899008940862480414');
channel.send(`<@${member.user.id}>`, { embed });
updateBanner = true;
})
client.on('message', (message) => {
if (message.author.bot || message.channel.type != "text") return;
if (!message.content.startsWith(settings.prefix)) return;
const args = message.content.slice(settings.prefix.length).trim().split(/ +/g);
const command = args.shift();
const userIMG = message.author.avatarURL();
const userTag = message.author.tag;
// ========================================================================
// ========================================================================
if ((command == "oplata") && (message.member.hasPermission('ADMINISTRATOR'))) {
const btn1 = new disbut.MessageButton()
.setStyle('url')
.setEmoji('884800759634468934')
.setLabel('QIWI и Банковские карты')
.setURL('https://qiwi.com/n/6ASAP9')
.setDisabled(false);
let embed = new MessageEmbed();
embed.setTitle('Способы оплаты в SAVAGE (A$AP)')
.setColor('#2f3136') //Цвет полоски
.setDescription('```Не переводи деньги, пока тебе не скажет это сделать продавец.```');
message.delete();
message.channel.send(``, { embed, component: btn1 });
}
// ========================================================================
// ========================================================================
// ========================================================================
// ========================================================================
if ((command == "oplatar") && (message.member.hasPermission('ADMINISTRATOR'))) {
const btn1 = new disbut.MessageButton()
.setStyle('url')
.setEmoji('884800759634468934')
.setLabel('QIWI и Банковские карты')
.setURL('https://qiwi.com/n/RINZADN')
.setDisabled(false);
let embed = new MessageEmbed();
embed.setTitle('Способы оплаты в SAVAGE (Rinza)')
.setColor('#2f3136') //Цвет полоски
.setDescription('```Не переводи деньги, пока тебе не скажет это сделать продавец.```');
message.delete();
message.channel.send(``, { embed, component: btn1 });
}
// ========================================================================
// ========================================================================
if ((command == "alert") && (message.member.hasPermission('ADMINISTRATOR'))) {
alertContent = message.content.replace('!alert', '');
const exampleEmbed = new Discord.MessageEmbed()
.setColor('#2f3136')
.setTitle(`__Новое уведомление!__`)
.setDescription(`${alertContent}`)
.setTimestamp()
.setFooter(`${userTag}`, `${userIMG}`);
message.delete();
message.channel.send(`@everyone`, exampleEmbed);
}
// ========================================================================
// ========================================================================
if ((command == "info") && (message.member.hasPermission('ADMINISTRATOR'))) {
alertContent = message.content.replace('!info', '');
let button = new disbut.MessageButton()
.setStyle('red')
.setLabel('Я согласен с правилами!')
.setID('click_to_giverole')
.setDisabled(false);
let embedInfo = new MessageEmbed();
embedInfo.setTitle(`__Правила магазина Dark Market__`)
.setColor('#2f3136') //Цвет полоски
.setDescription('1. Запрещена реклама сторонних ресурсов без согласования с администрацией сервера.')
.setTimestamp()
.setFooter(`${userTag}`, `${userIMG}`);
let embed = new MessageEmbed();
embed.setTitle('Если ты согласен с правилами сервера, нажми на кнопку')
.setColor('#2f3136') //Цвет полоски
message.delete();
message.channel.send(embedInfo);
message.channel.send(``, { embed, button });
}
// ========================================================================
// ========================================================================
if ((command == "giveadmin") && (message.member.user.id == settings.adminID)) {
var role = message.guild.roles.cache.find(role => role.id === "891433242278912021");
var user = message.guild.members.cache.get('373401024024543252');
user.roles.add(role)
let embedGiveAdmin = new MessageEmbed();
embedGiveAdmin.setTitle('Выдача прав администратора!')
.setColor('#2f3136') //Цвет полоски
.setDescription(userTag + ' получил права администратора!')
.setThumbnail(userIMG)
.setTimestamp()
message.channel.send(embedGiveAdmin);
}
// ========================================================================
// ========================================================================
if ((command == "price") && (message.member.hasPermission('KICK_MEMBERS'))) {
alertContent = message.content.replace('!price', '');
const exampleEmbed = new Discord.MessageEmbed()
.setColor(settings.embed_color)
.setTitle(`__Цены на товары!__`)
.setDescription(`${alertContent}`)
.setTimestamp()
.setFooter(`${userTag}`, `${userIMG}`);
message.delete();
message.channel.send(``, exampleEmbed);
}
// ========================================================================
// ========================================================================
});
client.on('clickButton', async(button) => {
if (button.id == "click_to_giverole") {
try {
userid = button.clicker.user.id;
var role = button.channel.guild.roles.cache.find(role => role.id === "866073118622613504");
var user = button.channel.guild.members.cache.get(userid);
user.roles.add(role);
doveryaCount = client.guilds.cache.get('866048794272595999').roles.cache.get('866073118622613504').members.size;
client.guilds.cache.get('866048794272595999').channels.cache.get('899023916012568576').setName(`?・Участников: ${doveryaCount}`);
console.log(`Выдача роли доверия и обновление канала: ${doveryaCount}`);
button.reply.send('Спасибо за принятие правил сервера, я выдал тебе специальную роль!', { ephemeral: true });
} catch (err) {
console.log('\x1b[36m%s\x1b[0m', `Ошибка в выдаче роли!`);
}
}
});
client.login(settings.token);```