我怎样才能禁止一些号码检查机器人

时间:2021-05-09 17:43:10

标签: php telegram-bot php-telegram-bot

比如如果有人输入命令“!user 123456”然后发送消息“号码被禁止”

我试过了,但没有用...

$ban = array('112233','123456'); if(strpos($message, "!user $ban") ===0){ sendMessage($chatId, "<u>Number Banned!</u>", $message_id); }

2 个答案:

答案 0 :(得分:1)

$ban = array('112233','123456'); 
$isbanned = false;
foreach ($ban as $b) {
  if(strpos($message, "!user $b") ===0) $isbanned = true;
}

if ($isbanned) { 
sendMessage($chatId, "<u>Number Banned!</u>", $message_id); 
}

答案 1 :(得分:1)

如果你要执行更多的命令,你应该从消息中解析出动作和数据,而不是使用 strpos,那么你可以使用逻辑在 user 上做一些事情,在 {{1} 上做一些事情等,使用消息的其余部分作为数据或进一步拆分

foobar

然后,如果将在多个地方使用以下内容:

<?php

$banned_users = ['123456', '112233'];

// parse out command from the message
$command = [
 'action' => '', // will contain user
 'data' => ''    // will contain 123456
];
if (isset($message[0], $message[1]) && $message[0] === '!') {
    $message = substr($message, 1);
    list($command['action'], $command['data']) = explode(' ', trim($message), 2);
}

// do commands
if ($command['action'] === 'user') {
    if (in_array($command['data'], $banned_users)) {
        sendMessage($chatId, "<u>Number Banned!</u>", $message_id);
    } else {
        sendMessage($chatId, "<u>Not Banned!</u>", $message_id);
    }
} elseif ($command['action'] === 'foobar') {
    //...
    echo 'Do foobar with: ' . $command['data'];
} else {
    sendMessage($chatId, "<u>Invalid command!</u>", $message_id);
}

创建一个函数:

if (in_array($command['data'], $banned_users)) {
    //sendMessage($chatId, "<u>Number Banned!</u>", $message_id);
    echo 'Number Banned!';
}

然后用它代替 in_array

function is_banned($number) {
    return in_array($number, ['123456', '112233']);
}