可视化编程中为什么循环时机器人不能接收消息?

738043ecc60a86cd251616538c20ab5e
只要在循环内加上一个if逻辑,判断如果接受到文本信息就执行什么,就卡死了

1 个赞

你这个是出错的情况吗?根据你的描述看起来不是。

1 个赞

奥,我明白了,“当接收到聊天信息”这个逻辑块内不能重复的接收,原来是一次行的

1 个赞

你没有发现“当接受到聊天消息”这个块上面没有口吗(

1 个赞

:smiling_face_with_tear:他这个问题到底是什么我至今没清楚,是塞不进去吗?

1 个赞

我以为“当接收到聊天信息”这个逻辑块像一个等待的线程,只要程序不结束,会一直接收信息

1 个赞

这个块是一个启动条件,也就是当接受到聊天消息时,执行以下的内容,所以发送消息的内容不管调用几次,永远是一样的

1 个赞

他可能觉得塞不进去是因为卡了(?)

1 个赞

这图里的逻辑没有问题,本来想发的是while循环里面还有个if逻辑块的,if逻辑块包着现在while循环里的内容。if逻辑块的判断是(发送消息的内容 == ‘参加’)就继续执行,然后这个判断为false,导致死循环了

1 个赞

if(message = ‘德州扑克 启动!’) {
let count = 1;
print(‘对局开始,当前玩家‘+count+’人’);
while(count != 3) {
if(message = ‘参加’) {
count++;
print('当前玩家‘+count+'人‘);
}
}
}

2 个赞

嗯,是你的逻辑出现了问题。「当接收到聊天信息」是每接收到一条聊天信息就运行一次下面的所有程序的。

你的逻辑思维使用朴素面向过程程序的思维,但编写机器人的时候会有一点区别。机器人是 事件驱动 的,因此逻辑思维与编写普通的程序会有所不同。以后找个机会我大概会详细说明一下。

1 个赞

说到点子上了

1 个赞

啊,我懂你意思了,你是觉得每次调用“发送消息的内容”都会读取最新的消息
但正如ilharp所说,机器人是事件驱动的,你一个程序里写的东西都是基于本次事件的(图中的事件就是一条消息)

1 个赞

你是不是想要这个样子?



需要不同群分开的话可能需要使用到数据库。

我觉得不如创建一个命令而不是当接收到消息

2 个赞

是这个意思

2 个赞