我的msg.text
= /start 76198769
/开始+空格+ 76198769
如果msg.text
= / start + 76198769然后Temp = 76198769,我该如何设置条件?
我的意思是,我想获得76198769
await bot.sendMessage(msg.chat.id, `telegram.me/myBot?start=${msg.chat.id}`, opts);
最佳答案
有几种方法可以做到。最简单的方法可能就是拆分字符串。
let vals = msg.text.split(' '); // yields an array of '/start', '76198769'
let temp = null;
if(vals[0] === '/start' && vals[1] === '76198769') {
temp = parseInt(vals[1]);
}
或者使用Regex,您可以
let matches = /\/start\s(\d+)/g.exec(msg.text);
let temp = null;
if(matches.length) {
temp = parseInt(matches[1]);
}
只是为了好玩,我指出我在这里建议的内容也可以扩展。例如,如果您有要使用的命令列表,则可以对其进行测试,然后将该命令路由到其他代码。
假设您有“开始”,“停止”,“信息”之类的命令。如果您这样创建一个对象(也许通过Node中的require):
const commands = {
'start' : function(args) { /* handle start */},
'stop' : function(args) { /* handle stop */},
'info' : function(args) { /* handle info */}
};
您可以构造您的正则表达式并按以下方式获取它:
const regex = /\/(start|stop|info)\s(\d+)/g;
let command = null;
let args = null;
let matches = regex.exec(msg.text);
if(matches.length) {
command = matches[1];
args = parseInt(matches[2]);
}
然后,您可以使用
commands[command](args);
执行命令如果确实需要,甚至可以通过连接命令对象的键来从字符串构造正则表达式,但是我将作为练习留给您。 :)