Фиксы описаний перенесённых команд
tictactoe снова работает, спасибо simply-djs :)
This commit is contained in:
JonnyBro 2022-02-02 23:54:06 +05:00
parent 5f8ca42fe8
commit c3c886ad38
15 changed files with 910 additions and 31 deletions

View file

@ -1,12 +1,12 @@
const Command = require("../../base/Command"),
TTT = require("discord-tictactoe");
tictactoe = require("../../helpers/tictactoe");
class TicTacToe extends Command {
constructor(client) {
super(client, {
name: "tictactoe",
dirname: __dirname,
enabled: false,
enabled: true,
guildOnly: false,
aliases: ["ttt"],
memberPermissions: [],
@ -17,19 +17,17 @@ class TicTacToe extends Command {
});
}
async run(message) {
const game = new TTT({ language: "ru" });
game.handleMessage(message);
game.on("win", async (data) => {
if (data.winner.id === "AI") return;
message.sendT("fun/number:WON", {
winner: data.winner.displayName
async run(message, args, data) {
tictactoe(message, {
embedColor: data.config.embed.color,
embedFoot: data.config.embed.footer
}).then(async (winner) => {
message.sendT("economy/number:WON", {
winner: winner.username
});
const userdata = await this.client.findOrCreateMember({
id: data.winner.id,
const memberData = await this.client.findOrCreateMember({
id: winner.id,
guildID: message.guild.id
});
@ -40,12 +38,40 @@ class TicTacToe extends Command {
type: "got"
};
data.memberData.transactions.push(info);
memberData.transactions.push(info);
userdata.money = userdata.money + 100;
userdata.save();
memberData.money = memberData.money + 100;
memberData.save();
});
}
}
module.exports = TicTacToe;
module.exports = TicTacToe;
// const game = new TTT({ language: "ru" });
// game.handleMessage(message);
// game.on("win", async (data) => {
// if (data.winner.id === "AI") return;
// message.sendT("fun/number:WON", {
// winner: data.winner.displayName
// });
// const userdata = await this.client.findOrCreateMember({
// id: data.winner.id,
// guildID: message.guild.id
// });
// const info = {
// user: message.translate("economy/tictactoe:DESCRIPTION"),
// amount: 100,
// date: Date.now(),
// type: "got"
// };
// data.memberData.transactions.push(info);
// userdata.money = userdata.money + 100;
// userdata.save();
// });

View file

@ -17,7 +17,7 @@ class Eval extends Command {
});
}
async run(message, data) {
async run(message, args, data) {
const content = message.content.split(" ").slice(1).join(" ");
const result = new Promise((resolve) => resolve(eval(content)));

View file

@ -1,3 +1,7 @@
### JaBa v3.3.5
* Исправления
* Команда *tictactoe* снова работает.
### JaBa v3.3.4
* Добавлено
* Команда *stealemoji (steale)* - Украсть эмодзи с другого сервера (для администрации с подпиской Nitro).

861
helpers/tictactoe.js Normal file
View file

@ -0,0 +1,861 @@
// Thanks to simply-djs for this =)
const Discord = require("discord.js");
/**
* @param message Discord Message
* @param options Array of Options
*/
/**
slash => Boolean
userSlash => String
resultBtn => Boolean
embedFoot => String
embedColor => HexColor
timeoutEmbedColor => HexColor
xEmoji => (Emoji ID) String
oEmoji => (Emoji ID) String
idleEmoji => (Emoji ID) String
*/
async function tictactoe(message, options = []) {
// eslint-disable-next-line no-async-promise-executor
return new Promise(async (resolve) => {
try {
const { client } = message;
let opponent;
if (message.commandId) {
opponent = message.options.getUser(options.userSlash || "user");
if (!opponent)
return message.followUp({
content: "Укажите пользователя!",
ephemeral: true
});
if (opponent.bot)
return message.followUp({
content: "Вы не можете играть против ботов!",
ephemeral: true
});
if (opponent.id == (message.user ? message.user : message.author).id)
return message.followUp({
content: "Вы не можете играть с самим собой!",
ephemeral: true
});
} else if (!message.commandId) {
opponent = message.mentions.members.first()?.user;
if (!opponent)
return message.channel.send({
content: "Укажите пользователя!"
});
if (opponent.bot)
return message.followUp({
content: "Вы не можете играть против ботов!",
ephemeral: true
});
if (opponent.id === message.member.id)
return message.channel.send({
content:
"Вы не можете играть с самим собой!"
});
}
const foot = { text: options.embedFoot } || { text: "Удачи =)" };
const acceptEmbed = new Discord.MessageEmbed()
.setTitle(`Ожидаю ответа ${opponent.tag}!`)
.setAuthor({
name: (message.user ? message.user : message.author).tag,
iconURL: (message.user ? message.user : message.author).displayAvatarURL()
})
.setColor(options.embedColor || "#075FFF")
.setFooter(foot);
const accept = new Discord.MessageButton()
.setLabel("Принять")
.setStyle("SUCCESS")
.setCustomId("acceptttt");
const decline = new Discord.MessageButton()
.setLabel("Отказаться")
.setStyle("DANGER")
.setCustomId("declinettt");
const accep = new Discord.MessageActionRow().addComponents([
accept,
decline
]);
let m;
if (message.commandId) {
m = await message.followUp({
content: "Хей, <@" + opponent.id + ">, вам предложили сыграть в крестики-нолики",
embeds: [acceptEmbed],
components: [accep]
});
} else if (!message.commandId) {
m = await message.reply({
content: "Хей, <@" + opponent.id + ">, вам предложили сыграть в крестики-нолики",
embeds: [acceptEmbed],
components: [accep]
});
}
const collector = m.createMessageComponentCollector({
type: "BUTTON",
time: 30000
});
collector.on("collect", async (button) => {
if (button.user.id !== opponent.id)
return button.reply({
content: `Запрос отправлен <@${opponent.id}>.`,
ephemeral: true
});
if (button.customId == "declinettt") {
button.deferUpdate();
return collector.stop("decline");
} else if (button.customId == "acceptttt") {
collector.stop();
if (message.commandId) {
button.message.delete();
}
const fighters = [
(message.user ? message.user : message.author).id,
opponent.id
].sort(() => (Math.random() > 0.5 ? 1 : -1));
const x_emoji = options.xEmoji || "❌";
const o_emoji = options.oEmoji || "⭕";
const dashmoji = options.idleEmoji || "";
const Args = {
user: 0,
a1: {
style: "SECONDARY",
emoji: dashmoji,
disabled: false
},
a2: {
style: "SECONDARY",
emoji: dashmoji,
disabled: false
},
a3: {
style: "SECONDARY",
emoji: dashmoji,
disabled: false
},
b1: {
style: "SECONDARY",
emoji: dashmoji,
disabled: false
},
b2: {
style: "SECONDARY",
emoji: dashmoji,
disabled: false
},
b3: {
style: "SECONDARY",
emoji: dashmoji,
disabled: false
},
c1: {
style: "SECONDARY",
emoji: dashmoji,
disabled: false
},
c2: {
style: "SECONDARY",
emoji: dashmoji,
disabled: false
},
c3: {
style: "SECONDARY",
emoji: dashmoji,
disabled: false
}
};
const { MessageActionRow, MessageButton } = require("discord.js");
const epm = new Discord.MessageEmbed()
.setTitle("Крестики-нолики")
.setColor(options.embedColor || "#075FFF")
.setFooter(foot)
.setTimestamp();
let msg;
if (message.commandId) {
msg = await message.followUp({
embeds: [
epm.setDescription(
`Ожидаю ход | <@!${Args.userid}>, Ваш эмодзи: ${
client.emojis.cache.get(o_emoji) || "⭕"
}`
)
]
});
} else if (!message.commandId) {
msg = await button.message.edit({
embeds: [
epm.setDescription(
`Ожидаю ход | <@!${Args.userid}>, Ваш эмодзи: ${
client.emojis.cache.get(o_emoji) || "⭕"
}`
)
]
});
}
await ttt(msg);
// eslint-disable-next-line no-inner-declarations
async function ttt(m) {
Args.userid = fighters[Args.user];
const won = {
"<:O_:863314110560993340>": false,
"<:X_:863314044781723668>": false
};
const a1 = new MessageButton()
.setStyle(Args.a1.style)
.setEmoji(Args.a1.emoji)
.setCustomId("a1")
.setDisabled(Args.a1.disabled);
const a2 = new MessageButton()
.setStyle(Args.a2.style)
.setEmoji(Args.a2.emoji)
.setCustomId("a2")
.setDisabled(Args.a2.disabled);
const a3 = new MessageButton()
.setStyle(Args.a3.style)
.setEmoji(Args.a3.emoji)
.setCustomId("a3")
.setDisabled(Args.a3.disabled);
const b1 = new MessageButton()
.setStyle(Args.b1.style)
.setEmoji(Args.b1.emoji)
.setCustomId("b1")
.setDisabled(Args.b1.disabled);
const b2 = new MessageButton()
.setStyle(Args.b2.style)
.setEmoji(Args.b2.emoji)
.setCustomId("b2")
.setDisabled(Args.b2.disabled);
const b3 = new MessageButton()
.setStyle(Args.b3.style)
.setEmoji(Args.b3.emoji)
.setCustomId("b3")
.setDisabled(Args.b3.disabled);
const c1 = new MessageButton()
.setStyle(Args.c1.style)
.setEmoji(Args.c1.emoji)
.setCustomId("c1")
.setDisabled(Args.c1.disabled);
const c2 = new MessageButton()
.setStyle(Args.c2.style)
.setEmoji(Args.c2.emoji)
.setCustomId("c2")
.setDisabled(Args.c2.disabled);
const c3 = new MessageButton()
.setStyle(Args.c3.style)
.setEmoji(Args.c3.emoji)
.setCustomId("c3")
.setDisabled(Args.c3.disabled);
const a = new MessageActionRow().addComponents([a1, a2, a3]);
const b = new MessageActionRow().addComponents([b1, b2, b3]);
const c = new MessageActionRow().addComponents([c1, c2, c3]);
const buttons = [a, b, c];
if (
Args.a1.emoji == o_emoji &&
Args.b1.emoji == o_emoji &&
Args.c1.emoji == o_emoji
)
won["<:O_:863314110560993340>"] = true;
if (
Args.a2.emoji == o_emoji &&
Args.b2.emoji == o_emoji &&
Args.c2.emoji == o_emoji
)
won["<:O_:863314110560993340>"] = true;
if (
Args.a3.emoji == o_emoji &&
Args.b3.emoji == o_emoji &&
Args.c3.emoji == o_emoji
)
won["<:O_:863314110560993340>"] = true;
if (
Args.a1.emoji == o_emoji &&
Args.b2.emoji == o_emoji &&
Args.c3.emoji == o_emoji
)
won["<:O_:863314110560993340>"] = true;
if (
Args.a3.emoji == o_emoji &&
Args.b2.emoji == o_emoji &&
Args.c1.emoji == o_emoji
)
won["<:O_:863314110560993340>"] = true;
if (
Args.a1.emoji == o_emoji &&
Args.a2.emoji == o_emoji &&
Args.a3.emoji == o_emoji
)
won["<:O_:863314110560993340>"] = true;
if (
Args.b1.emoji == o_emoji &&
Args.b2.emoji == o_emoji &&
Args.b3.emoji == o_emoji
)
won["<:O_:863314110560993340>"] = true;
if (
Args.c1.emoji == o_emoji &&
Args.c2.emoji == o_emoji &&
Args.c3.emoji == o_emoji
)
won["<:O_:863314110560993340>"] = true;
if (won["<:O_:863314110560993340>"] != false) {
if (Args.user == 0) {
const wonner = await client.users
.fetch(fighters[1])
.catch(console.error);
resolve(wonner);
if (options.resultBtn === true)
return m
.edit({
content: `<@${fighters[1]}> (${
client.emojis.cache.get(o_emoji) || "⭕"
}) выиграл`,
components: buttons,
embeds: [
epm.setDescription(
`<@!${fighters[1]}> (${
client.emojis.cache.get(o_emoji) || "⭕"
}) выиграл.`
)
]
})
.then((m) => {
m.react("⭕");
});
else if (!options.resultBtn || options.resultBtn === false)
return m
.edit({
content: `<@${fighters[1]}> (${
client.emojis.cache.get(o_emoji) || "⭕"
}) выиграл`,
embeds: [
epm.setDescription(
`<@!${fighters[1]}> (${
client.emojis.cache.get(o_emoji) || "⭕"
}) выиграл\n\`\`\`\n${Args.a1.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.a2.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.a3.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")}\n${Args.b1.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.b2.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.b3.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")}\n${Args.c1.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.c2.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.c3.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")}\n\`\`\``.replaceAll(
dashmoji,
""
)
)
],
components: []
})
.then((m) => {
m.react("⭕");
});
} else if (Args.user == 1) {
const wonner = await client.users
.fetch(fighters[0])
.catch(console.error);
resolve(wonner);
if (options.resultBtn === true)
return m
.edit({
content: `<@${fighters[0]}> (${
client.emojis.cache.get(o_emoji) || "⭕"
}) выиграл`,
components: buttons,
embeds: [
epm.setDescription(
`<@!${fighters[0]}> (${
client.emojis.cache.get(o_emoji) || "⭕"
}) выиграл`
)
]
})
.then((m) => {
m.react("⭕");
});
else if (!options.resultBtn || options.resultBtn === false)
return m
.edit({
content: `<@${fighters[0]}> (${
client.emojis.cache.get(o_emoji) || "⭕"
}) выиграл`,
embeds: [
epm.setDescription(
`<@!${fighters[0]}> (${
client.emojis.cache.get(o_emoji) || "⭕"
}) выиграл\n\`\`\`\n${Args.a1.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.a2.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.a3.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")}\n${Args.b1.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.b2.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.b3.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")}\n${Args.c1.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.c2.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.c3.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")}\n\`\`\``.replaceAll(
dashmoji,
""
)
)
],
components: []
})
.then((m) => {
m.react("⭕");
});
}
}
if (
Args.a1.emoji == x_emoji &&
Args.b1.emoji == x_emoji &&
Args.c1.emoji == x_emoji
)
won["<:X_:863314044781723668>"] = true;
if (
Args.a2.emoji == x_emoji &&
Args.b2.emoji == x_emoji &&
Args.c2.emoji == x_emoji
)
won["<:X_:863314044781723668>"] = true;
if (
Args.a3.emoji == x_emoji &&
Args.b3.emoji == x_emoji &&
Args.c3.emoji == x_emoji
)
won["<:X_:863314044781723668>"] = true;
if (
Args.a1.emoji == x_emoji &&
Args.b2.emoji == x_emoji &&
Args.c3.emoji == x_emoji
)
won["<:X_:863314044781723668>"] = true;
if (
Args.a3.emoji == x_emoji &&
Args.b2.emoji == x_emoji &&
Args.c1.emoji == x_emoji
)
won["<:X_:863314044781723668>"] = true;
if (
Args.a1.emoji == x_emoji &&
Args.a2.emoji == x_emoji &&
Args.a3.emoji == x_emoji
)
won["<:X_:863314044781723668>"] = true;
if (
Args.b1.emoji == x_emoji &&
Args.b2.emoji == x_emoji &&
Args.b3.emoji == x_emoji
)
won["<:X_:863314044781723668>"] = true;
if (
Args.c1.emoji == x_emoji &&
Args.c2.emoji == x_emoji &&
Args.c3.emoji == x_emoji
)
won["<:X_:863314044781723668>"] = true;
if (won["<:X_:863314044781723668>"] != false) {
if (Args.user == 0) {
const wonner = await client.users
.fetch(fighters[1])
.catch(console.error);
resolve(wonner);
if (options.resultBtn === true)
return m
.edit({
content: `<@${fighters[1]}> (${
client.emojis.cache.get(x_emoji) || "❌"
}) выиграл`,
components: buttons,
embeds: [
epm.setDescription(
`<@!${fighters[1]}> (${
client.emojis.cache.get(x_emoji) || "❌"
}) выиграл`
)
]
})
.then((m) => {
m.react("❌");
});
else if (!options.resultBtn || options.resultBtn === false)
return m
.edit({
content: `<@${fighters[1]}> (${
client.emojis.cache.get(x_emoji) || "❌"
}) выиграл`,
embeds: [
epm.setDescription(
`<@!${fighters[1]}> (${
client.emojis.cache.get(x_emoji) || "❌"
}) выиграл\n\`\`\`\n${Args.a1.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.a2.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.a3.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")}\n${Args.b1.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.b2.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.b3.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")}\n${Args.c1.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.c2.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.c3.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")}\n\`\`\``.replaceAll(
dashmoji,
""
)
)
],
components: []
})
.then((m) => {
m.react("❌");
});
} else if (Args.user == 1) {
const wonner = await client.users
.fetch(fighters[0])
.catch(console.error);
resolve(wonner);
if (options.resultBtn === true)
return m
.edit({
content: `<@${fighters[0]}> (${
client.emojis.cache.get(x_emoji) || "❌"
}) выиграл`,
components: buttons,
embeds: [
epm.setDescription(
`<@!${fighters[0]}> (${
client.emojis.cache.get(x_emoji) || "❌"
}) выиграл`
)
]
})
.then((m) => {
m.react("❌");
});
else
return m
.edit({
content: `<@${fighters[0]}> (${
client.emojis.cache.get(x_emoji) || "❌"
}) выиграл`,
embeds: [
epm.setDescription(
`<@!${fighters[0]}> (${
client.emojis.cache.get(x_emoji) || "❌"
}) выиграл\n\`\`\`\n${Args.a1.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.a2.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.a3.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")}\n${Args.b1.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.b2.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.b3.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")}\n${Args.c1.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.c2.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.c3.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")}\n\`\`\``.replaceAll(
dashmoji,
""
)
)
],
components: []
})
.then((m) => {
m.react("❌");
});
}
}
m.edit({
content: `<@${Args.userid}>`,
embeds: [
epm.setDescription(
`Ожидаю ход | <@!${Args.userid}> | Ваш эмодзи: ${
Args.user == 0
? `${client.emojis.cache.get(o_emoji) || "⭕"}`
: `${client.emojis.cache.get(x_emoji) || "❌"}`
}`
)
],
components: [a, b, c]
});
const collector = m.createMessageComponentCollector({
componentType: "BUTTON",
max: 1,
time: 30000
});
collector.on("collect", (b) => {
if (b.user.id !== Args.userid) {
b.reply({
content: "Вы не можете играть сейчас!",
ephemeral: true
});
ttt(m);
} else {
if (Args.user == 0) {
Args.user = 1;
Args[b.customId] = {
style: "SUCCESS",
emoji: o_emoji,
disabled: true
};
} else {
Args.user = 0;
Args[b.customId] = {
style: "DANGER",
emoji: x_emoji,
disabled: true
};
}
b.deferUpdate();
const map = (obj, fun) =>
Object.entries(obj).reduce(
(prev, [key, value]) => ({
...prev,
[key]: fun(key, value)
}),
{}
);
const objectFilter = (obj, predicate) =>
Object.keys(obj)
.filter((key) => predicate(obj[key]))
.reduce((res, key) => ((res[key] = obj[key]), res), {});
const Brgs = objectFilter(
map(Args, (_, fruit) => fruit.emoji == dashmoji),
(num) => num == true
);
if (Object.keys(Brgs).length == 0) {
if (
Args.a1.emoji == o_emoji &&
Args.b1.emoji == o_emoji &&
Args.c1.emoji == o_emoji
)
won["<:O_:863314110560993340>"] = true;
if (
Args.a2.emoji == o_emoji &&
Args.b2.emoji == o_emoji &&
Args.c2.emoji == o_emoji
)
won["<:O_:863314110560993340>"] = true;
if (
Args.a3.emoji == o_emoji &&
Args.b3.emoji == o_emoji &&
Args.c3.emoji == o_emoji
)
won["<:O_:863314110560993340>"] = true;
if (
Args.a1.emoji == o_emoji &&
Args.b2.emoji == o_emoji &&
Args.c3.emoji == o_emoji
)
won["<:O_:863314110560993340>"] = true;
if (
Args.a3.emoji == o_emoji &&
Args.b2.emoji == o_emoji &&
Args.c1.emoji == o_emoji
)
won["<:O_:863314110560993340>"] = true;
if (
Args.a1.emoji == o_emoji &&
Args.a2.emoji == o_emoji &&
Args.a3.emoji == o_emoji
)
won["<:O_:863314110560993340>"] = true;
if (
Args.b1.emoji == o_emoji &&
Args.b2.emoji == o_emoji &&
Args.b3.emoji == o_emoji
)
won["<:O_:863314110560993340>"] = true;
if (
Args.c1.emoji == o_emoji &&
Args.c2.emoji == o_emoji &&
Args.c3.emoji == o_emoji
)
won["<:O_:863314110560993340>"] = true;
if (won["<:O_:863314110560993340>"] == true) return ttt(m);
else if (won["<:X_:863314044781723668>"] == true) return;
else {
ttt(m);
if (options.resultBtn === true)
return m
.edit({
content: "Ничья",
embeds: [epm.setDescription("Это ничья!")]
})
.then((m) => {
m.react(dashmoji);
});
else
return m
.edit({
content: "Ничья",
embeds: [
epm.setDescription(
`Это ничья!\n\`\`\`\n${Args.a1.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.a2.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.a3.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")}\n${Args.b1.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.b2.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.b3.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")}\n${Args.c1.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.c2.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")} | ${Args.c3.emoji
.replace(o_emoji, "⭕")
.replace(x_emoji, "❌")}\n\`\`\``.replaceAll(
dashmoji,
""
)
)
],
components: []
})
.then((m) => {
m.react(dashmoji);
})
.catch(() => {});
}
}
ttt(m);
}
});
collector.on("end", (collected, reason) => {
if (collected.size === 0 && reason == "time")
m.edit({
content: `<@!${Args.userid}> не ответил вовремя! (30с)`,
components: []
});
});
}
}
});
collector.on("end", (collected, reason) => {
if (reason == "time") {
const embed = new Discord.MessageEmbed()
.setTitle("Запрос не принят вовремя")
.setAuthor({
name: (message.user ? message.user : message.author).tag,
iconURL: (message.user ? message.user : message.author).displayAvatarURL()
})
.setColor(options.timeoutEmbedColor || "#C90000")
.setFooter(foot)
.setDescription("Время вышло!\nЛимит: 30с");
m.edit({
content: "<@" + opponent.id + "> не принял запрос",
embeds: [embed],
components: []
});
}
if (reason == "decline") {
const embed = new Discord.MessageEmbed()
.setTitle("Игра отменена!")
.setAuthor({
name: (message.user ? message.user : message.author).tag,
iconURL: (message.user ? message.user : message.author).displayAvatarURL()
})
.setColor(options.timeoutEmbedColor || "#C90000")
.setFooter(foot)
.setDescription(`${opponent.user.tag} отказался от игры!`);
m.edit({
embeds: [embed],
components: []
});
}
});
} catch (err) {
console.log(`tictactoe | Ошибка: ${err.stack}`);
}
});
}
module.exports = tictactoe;

View file

@ -1,6 +0,0 @@
{
"DESCRIPTION": "Получить случайный FML",
"USAGE": "{{prefix}}fml",
"EXAMPLES": "{{prefix}}fml",
"FOOTER": "JaBa | blague.xyz"
}

View file

@ -1,6 +0,0 @@
{
"DESCRIPTION": "Получить случайный FML",
"USAGE": "{{prefix}}fml",
"EXAMPLES": "{{prefix}}fml",
"FOOTER": "JaBa | blague.xyz"
}

View file

@ -1,6 +1,6 @@
{
"name": "jaba",
"version": "3.3.4",
"version": "3.3.5",
"description": "A very complete Discord bot (more than 100 commands) that uses the Discord.js",
"main": "index.js",
"private": true,