我正在设置一个带有反应的discord机器人,但第二个反应中有一个错误,按编号排列,但我找不到它。这可能是一个循环错误,但我已经尝试更改变量的名称,没有任何帮助。我也为代码的长度感到抱歉,但我已尝试将其缩短到最大值。
点击命令后!机器人
,机器人应该回复一条包含5种可能反应的消息。
如果我按反应1,会出现第二条消息,其中包含嵌入中的描述、不和谐和日期。
在这条消息的底部应该会出现一个反应✅。
除了当我按下这个反应时什么都不会发生之外,一切都没有担心。
js prettyprint-override">client.on('message', async message => {
if (message.content.toLowerCase().startsWith('!bot')) {
async function accessSpreadsheet(embed) {
const doc = new GoogleSpreadsheet('1qA11t460-ceILmwu6RtfiPGb_n9MUD_7z6Ld7I_Z6yc');
await promisify(doc.useServiceAccountAuth)(creds);
const info = await promisify(doc.getInfo)();
var sheet = info.worksheets[0];
var cells = await promisify(sheet.getCells)({
'min-row': 2,
'max-row': 7,
'min-col': 16,
'max-col': 16,
'return-empty': true,
})
for (var cell of cells) {
}
for (let i = 0; i < 25 && cells[i]; i++) {
{
if (i == 0) embed.addField('Name', `•1⃣ ${cells[i].value}`, false);
} {
if (i == 1) embed.addField('Name', `•2⃣ ${cells[i].value}`, false);
} {
if (i == 2) embed.addField('Name', `•3⃣ ${cells[i].value}`, false);
} {
if (i == 3) embed.addField('Name', `•4⃣ ${cells[i].value}`, false);
} {
if (i == 4) embed.addField('Name', `•5⃣ ${cells[i].value}`, false);
}
}
}
var embed = new RichEmbed()
.setColor('#0099ff')
.setTitle("A title");
try {
var sentMessage = await accessSpreadsheet(embed)
.then(() => message.author.send(embed))
.catch(console.error);
for (let n = 1; n <= 5; n++) await sentMessage.react(`${n}⃣`);
const filter = (reaction, user) => ['1', '2', '3', '4', '5'].includes(reaction.emoji.name.slice(0, 1)) && user.id === message.author.id;
const collected = await sentMessage.awaitReactions(filter, {
maxMatches: 1,
time: 4000
});
if (collected.size === 0) {
await message.channel.send('Time ran out');
} else {
const reaction = collected.first();
switch (reaction.emoji.name.slice(0, 1)) {
case '1':
async function accessSpreadsheet(embed1) {
const doc = new GoogleSpreadsheet('1qA11t460-ceILmwu6RtfiPGb_n9MUD_7z6Ld7I_Z6yc');
await promisify(doc.useServiceAccountAuth)(creds);
const info = await promisify(doc.getInfo)();
var sheet = info.worksheets[0];
var cells = await promisify(sheet.getCells)({
'min-row': 2,
'max-row': 7,
'min-col': 16,
'max-col': 16,
'return-empty': true,
})
for (let i = 0; i < 25 && cells[i]; i++) {
{
if (i == 0) embed1.setTitle(`You select: ${cells[i].value}`);
}
}
var cells1 = await promisify(sheet.getCells)({
'min-row': 2,
'max-row': 7,
'min-col': 17,
'max-col': 17,
'return-empty': true,
})
for (let j = 0; j < 25 && cells1[j]; j++) {
{
if (j == 0) embed1.setDescription(`Description: \n \n ${cells1[j].value}`);
}
}
var cells1 = await promisify(sheet.getCells)({
'min-row': 2,
'max-row': 7,
'min-col': 18,
'max-col': 18,
'return-empty': true,
})
for (let l = 0; l < 25 && cells1[l]; l++) {
{
if (l == 0) embed1.addField(`Discord:`, `${cells1[l].value}`, true);
}
}
var cells1 = await promisify(sheet.getCells)({
'min-row': 2,
'max-row': 7,
'min-col': 20,
'max-col': 20,
'return-empty': true,
})
for (let k = 0; k < 25 && cells1[k]; k++) {
{
if (k == 0) embed1.addField(`Date:`, `${cells1[k].value}`, true);
}
}
for (let k = 0; k < 25 && cells1[k]; k++) {
{
if (k == 0) embed1.addField(`To be validated with ✅:`, `click on reaction`);
}
}
}
var embed1 = new RichEmbed()
.setColor('#0099ff');
await accessSpreadsheet(embed1)
.then(() => message.author.send(embed1))
.then(message => {
message.react('✅')
//Problem starts here
client.on('messageReactionAdd', async (reaction, user) => {
if (reaction.emoji.name === '✅' && user.id !== client.user.id) {
async function accessSpreadsheet(embed2) {
var doc = new GoogleSpreadsheet('1qA11t460-ceILmwu6RtfiPGb_n9MUD_7z6Ld7I_Z6yc');
await promisify(doc.useServiceAccountAuth)(creds);
var info = await promisify(doc.getInfo)();
var sheet = info.worksheets[0];
var cells = await promisify(sheet.getCells)({
'min-row': 2,
'max-row': 7,
'min-col': 21,
'max-col': 21,
'return-empty': true,
})
for (let m = 0; m < 25 && cells[m]; m++) {
{
if (m == 0) embed2.addField(`Days before toornament: ${cells[m].value}`, `Choose options: \n 1⃣ \n 2⃣ \n 3⃣ \n \n **(5 sec)**`);
}
}
}
var embed2 = new RichEmbed()
.setColor('#0099ff');
try {
var sentMessage1 = await accessSpreadsheet(embed2)
.then(() => message.author.send(embed2))
.catch(console.error);
for (let z = 1; z <= 3; z++) await sentMessage1.react(`${z}⃣`); // The error is here
const filter = (reaction, user) => ['1', '2', '3'].includes(reaction.emoji.name.slice(0, 1)) && user.id === message.author.id;
const collected = await sentMessage1.awaitReactions(filter, {
maxMatches: 1,
time: 4000
});
if (collected.size === 0) {
await message.channel.send('Time ran out');
} else {
const reaction = collected.first();
switch (reaction.emoji.name.slice(0, 1)) {
case '1':
message.channel.send('1')
break;
case '2':
await message.channel.send('You chose `two`.');
break;
case '3':
await message.channel.send('You chose `3`.');
break;
}
}
} catch (err) {
console.error(err);
}
}
})
})
.catch(console.error);
break;
case '2':
await message.channel.send('You chose `two`.');
break;
case '3':
await message.channel.send('You chose `3`.');
break;
case '4':
await message.channel.send('You chose `4`.');
break;
case '5':
await message.channel.send('You chose `5`.');
break;
}
}
} catch (err) {
console.error(err);
}
}
})
我知道这只适用于反应1,但控制台显示:
DiscordAPIError:无法向此用户发送消息
TypeError:无法读取属性'反应'的未定义'
错误出现在以下行:
for (let z = 1; z <= 3; z ++) await sentMessage1.react (`$ {z} ⃣`);
我注意到的一件事是,您使用异步/等待,但处理它像一个promise.then
var sentMessage1 = await accessSpreadsheet(embed2)
.then(() => message.author.send(embed2))
.catch(console.error);
没有收到任何从你调用回来的消息。
您要么必须返回一个上面有的东西。反应
,要么处理然后语句中的所有内容。
var sentMessage1 = await accessSpreadsheet(embed2)
.then(() => {
message.author.send(embed2);
message.author.react(####); //I don't know the discord API
})
.catch(console.error);
我正在学习Mosh Hamedani的教程“角度4:初学者到专业”。 当我试图编辑一个产品时,我试图在一个表单中显示它的标题。该产品存储在firebase数据库中。我是新来的Angular。 但是,当我转到编辑表单时,控制台中会出现此错误 这是我表格的一部分: 这是产品表单.组件.ts 怎么做才能显示产品的标题?
在本教程的帮助下,我将使用条形码扫描仪和SQLite构建一个Ionic库存管理应用程序:https://www . tech iediaries . com/Ionic-Cordova-SQLite-Barcode-Scanner-product-Inventory-manager/ 当我添加这段代码时: …到数据服务。ts我得到这个错误: core . js:19866 ERROR ERROR:
问题内容: 除了添加新笔记,一切似乎都可以在这个小应用程序中使用。按钮位于Board组件上。 我知道这个问题通常是由于未正确绑定“ this”的值引起的。我不确定这是否是这里的问题,或者我是否缺少其他东西。谢谢 演示:http://jsbin.com/pewahi/edit?js,输出 问题答案: 您的代码很好。这可能是JSBin的错误,以及如何使用Babel处理转译。如果将杂项添加到代码的顶部,
这是我的功能。显示解析错误(data.ops[0])
我在Submit上有一个表单,它必须路由到list.js。当我遇到以下错误时,如何路由到list.js以在单击“添加文章”按钮时显示所有文章 组件/form.js src/index 当我使用react-router dom时,我应该使用react-redux路由器吗?我需要安装一些插件还是withrouter。我不知道。有人能告诉我哪里出了问题吗?
问题内容: 我收到以下错误 未捕获的TypeError:无法读取未定义的属性’setState’ 即使在构造函数中绑定了delta之后。 问题答案: 这是由于不受约束。 为了绑定设置在构造函数中: 当前,您正在调用绑定。但是bind返回一个绑定函数。您需要将函数设置为其绑定值。