Bots 计算游戏不和谐

Bots 计算游戏不和谐,bots,discord,discord.js,counting,Bots,Discord,Discord.js,Counting,大家好。我创建了自己的机器人 我有很多很棒的东西,比如游戏等等。 然而,我想做一个沙发游戏。 我有一个频道叫“计数” 我想设置我的机器人,如下所示: 用户1:456 用户2:457 机器人:458 我的问题是,在没有其他人计数的情况下,如何让机器人计数?但只有一次。(请看示例^^) 如果可以,请给我一个示例代码好吗?谢谢 试试这个: const{Client}=require('discord.js') const client=new client() //存储当前计数。 让计数=0 //如果

大家好。我创建了自己的机器人 我有很多很棒的东西,比如游戏等等。 然而,我想做一个沙发游戏。 我有一个频道叫“计数” 我想设置我的机器人,如下所示:

用户1:456

用户2:457

机器人:458

我的问题是,在没有其他人计数的情况下,如何让机器人计数?但只有一次。(请看示例^^)

如果可以,请给我一个示例代码好吗?谢谢

试试这个:

const{Client}=require('discord.js')
const client=new client()
//存储当前计数。
让计数=0
//如果在设定的时间段内没有其他人计数,则存储用于使bot计数的超时
//时间。
让超时
on('message',({channel,content,member})=>{
//当然,只能对计数通道执行此操作
//如果你想简单地让这项工作适用于所有被称为“计数”的频道,你需要
//我可以用这句话:
//if(client.channels.cache.filter(c=>c.name==='counting').keyArray()包含(channel.id))
if(channel.id===‘计算通道id’){
//您可以像这样忽略所有bot消息
if(member.user.bot)返回
//如果消息是当前计数+1。。。
如果(数量(内容)==计数+1){
//…增加计数
计数++
//删除任何现有的超时以计数
if(超时)client.clearTimeout(超时)
//添加一个新的超时
timeout=client.setTimeout(
//这将使bot计数并记录所有错误
()=>channel.send(++count).catch(console.error),
//30秒后
30000
)
//如果消息不是由机器人发送的。。。
}else if(member.id!==client.user.id){
//…发送一条消息,因为此人已完成计数(并记录所有错误)
channel.send(`${member}搞糟了!`).catch(console.error)
//重置计数
计数=0
//重置任何现有超时,因为bot已计数,因此不需要
//再数一数
if(超时)client.clearTimeout(超时)
}
}
})
client.login('您的令牌')

解释 当用户(不是机器人)在计数通道中发送消息时,机器人会检查用户是否正确计数(
if(Number(content)==count+1
)。
如果是,则会增加
count
,删除超时(如果存在)(
If(timeout)client.cleartimout(timeout)
),并计划bot在30秒后计数(
client.setTimeout(()=>channel.send(++count),30000)

如果没有,bot将发送一条消息,重置计数,并清除超时(如果存在)

当机器人发送消息时,它不会触发任何消息。当bot计数时,
Number(content)==count
,因为它已递增

我使用了而不仅仅是
setTimeout
,因为
client.setTimeout
将在客户端被破坏时自动删除超时。

尝试以下操作:

const{Client}=require('discord.js')
const client=new client()
//存储当前计数。
让计数=0
//如果在设定的时间段内没有其他人计数,则存储用于使bot计数的超时
//时间。
让超时
on('message',({channel,content,member})=>{
//当然,只能对计数通道执行此操作
//如果你想简单地让这项工作适用于所有被称为“计数”的频道,你需要
//我可以用这句话:
//if(client.channels.cache.filter(c=>c.name==='counting').keyArray()包含(channel.id))
if(channel.id===‘计算通道id’){
//您可以像这样忽略所有bot消息
if(member.user.bot)返回
//如果消息是当前计数+1。。。
如果(数量(内容)==计数+1){
//…增加计数
计数++
//删除任何现有的超时以计数
if(超时)client.clearTimeout(超时)
//添加一个新的超时
timeout=client.setTimeout(
//这将使bot计数并记录所有错误
()=>channel.send(++count).catch(console.error),
//30秒后
30000
)
//如果消息不是由机器人发送的。。。
}else if(member.id!==client.user.id){
//…发送一条消息,因为此人已完成计数(并记录所有错误)
channel.send(`${member}搞糟了!`).catch(console.error)
//重置计数
计数=0
//重置任何现有超时,因为bot已计数,因此不需要
//再数一数
if(超时)client.clearTimeout(超时)
}
}
})
client.login('您的令牌')

解释 当用户(不是机器人)在计数通道中发送消息时,机器人会检查用户是否正确计数(
if(Number(content)==count+1
)。
如果是,则会增加
count
,删除超时(如果存在)(
If(timeout)client.cleartimout(timeout)
),并计划bot在30秒后计数(
client.setTimeout(()=>channel.send(++count),30000)

如果没有,bot将发送一条消息,重置计数,并清除超时(如果存在)

当机器人发送消息时,它不会触发任何消息。当bot计数时,
Number(content)==count
,因为它已递增


我使用了而不仅仅是
setTimeout
,因为
client.setTimeout
将在客户端被破坏时自动删除超时。

因此,它也可以工作,问题是:。此外,我需要知道当机器人检测到不属于数字的消息时,它是如何删除消息的。此外,我如何忽略来自机器人的消息,例如Pokecord,它们在计数时发送消息,因此计数机器人重新启动为0。如果(member.author.bot)返回,则使用
。我在回答中编辑了这个。谢谢!:你帮了我很多,谢谢你的帮助!继续这样说:PSo,它也可以工作,问题是:。阿尔索