全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 833|回复: 12

问下开发TG bot交互的问题

[复制链接]
发表于 2022-4-25 09:13:02 | 显示全部楼层 |阅读模式
本帖最后由 深海空间 于 2022-4-25 09:51 编辑

之前一直使用的一个影视资料网站现在要求app才能使用,不想下载,所以打算手搓一个tg bot,发送编号后就去官网爬取对应的影片预览图返回来,现在基本能达到预期,但是目前是通过 "/指令 编号" 的形式查询,比如 /img fc2-222222;

现在我想要像botfather一样的交互,先发送指令过去,再发送内容,问题就是怎么判断第二次发送的就是我要查询的东西?

比如截图里的,我第一次/newbot,然后botfather会叫我输入一个名字,我输入123,我想问下他是怎么知道123是我回复给/newbot的名字?而不是回复给其他指令的?他是通过什么逻辑判断的?有没有开发过bot的大大佬呀

发表于 2022-4-25 09:27:52 | 显示全部楼层
可以记一个缓存标记,标记的key是tg id之类的,缓存存在这个tg id的消息按照内容处理,不存在按照指令处理
发表于 2022-4-25 09:24:34 | 显示全部楼层
指令就那几个 如果你发的内容跟指令字符串不匹配,那就默认为内容啊

再有就是,如果不是指令,判断下上次下发的是哪个指令,不就能关联上了
 楼主| 发表于 2022-4-25 09:27:53 | 显示全部楼层

请问下逻辑是把用户发送过来的东西都先记录起来,然后通过判断用户上一次输入的内容决定是否是回复给对应指令的吗?比如/newbot的时候,先存起来,然后用户第二次发送的内容(比如发了个ABC)时候如果查找到上次发送的是/newbot,那么就可以将ABC确定为用户要设置的机器人名字?我这样想对吗
 楼主| 发表于 2022-4-25 09:29:54 | 显示全部楼层
helone 发表于 2022-4-25 09:27
可以记一个缓存标记,标记的key是tg id之类的,缓存存在这个tg id的消息按照内容处理,不存在按照指令处理 ...

你看下是不是我5楼发的那种处理逻辑
 楼主| 发表于 2022-4-25 09:31:47 | 显示全部楼层
woniu 发表于 2022-4-25 09:24
指令就那几个 如果你发的内容跟指令字符串不匹配,那就默认为内容啊

再有就是,如果不是指令,判断下上次 ...

你看下是不是我5楼发的那种处理逻辑
发表于 2022-4-25 09:36:18 | 显示全部楼层
查看对应tg bot api的conversation

例如telethon的
https://docs.telethon.dev/en/stable/quick-references/objects-reference.html?highlight=conversation#conversation
发表于 2022-4-25 10:01:37 | 显示全部楼层
你把交互逻辑要改一下
换成会话。每个用户单独一个会话,而不是单独的 /order 这个形式
会话的话可以用redis也可以数据库,以sessionid形式这样的。就像,用户中心。



我是萌新

请你放心

 楼主| 发表于 2022-4-25 10:16:09 | 显示全部楼层
tsdog 发表于 2022-4-25 10:01
你把交互逻辑要改一下
换成会话。每个用户单独一个会话,而不是单独的 /order 这个形式
会话的话可以用redi ...

刚才我还在想,用户A发了指令,用户B内容,bot会把返回结果返回给B,你这种会话的逻辑刚好可以解决这个问题 海事loc大佬多
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-3-29 12:41 , Processed in 0.062378 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表