ctx.exclude(ctx.guild())可以更改上下文为私聊,但我用ctx.user(userid).exclude(ctx.guild())却在沙盒里没有响应了(userid已赋值为前面发送某消息的用户id),求解惑!
1 个赞
希望在用户在群聊发送特定信息后,bot在私聊和该用户进行交互
1 个赞
ctx.guild().middleware((session,next)=>{
if(session.content==='1'){
hostid = session.userId
}
else{
return next()
}
})
ctx.user(hostid).exclude(ctx.guild()).middleware(async(session,next)=>{
await session.send('请输入:')
item = await session.prompt(600000)
if (!item) return('输入超时。')
else return next()
})
类似这样的
1 个赞
不要使用上下文存储暂时的状态信息,上下文是用来定义 机器人功能 的。首先定义 机器人能与用户进行私聊,然后在实现这项功能的时候再判断 此时是否该响应用户。
1 个赞
const 可以私聊的用户列表 = []
ctx.guild().command('开始私聊')
.action(({ userId }) => {
可以私聊的用户列表.push(userId)
})
ctx.exclude(ctx.guild())
.middleware(async (session, next) => {
// 不是可以私聊的用户的话就什么也不做
if (!可以私聊的用户列表.contains(session.userId)) return // 什么也不做
// 对可以私聊的用户执行操作
await session.send('请输入:')
const item = await session.prompt(600000)
if (!item) return '输入超时。'
// 使用 item 继续操作
return next()
})
1 个赞
受教,谢谢!
1 个赞