【发布时间】:2021-10-06 18:52:59
【问题描述】:
我想用另一个命令的参数触发一个命令,也想用一个控制器的参数触发一个命令,所以我的命令命令解决方案是:
class ChangeLanguageCommand extends Command
{
/**
* @var string Command Name
*/
protected $name = 'change_language';
/**
* @var string Command Description
*/
protected $description = 'Change Language,Change language of bot';
protected $pattern = '{lang}';
/**
* {@inheritdoc}
*/
public function handle()
{
if($this->getArguments())
{
$args = $this->getArguments();
if($args['lang'])
$lang=$args['lang'];
else
$lang='fa';
}
else
$lang='fa';
if($lang=='fa')
{
$response=$this->replyWithMessage(['text' => 'زبان ربات تغییر یافت.']);
$this->triggerCommand('start',$this->getArguments());
}
else
{
$response=$this->replyWithMessage(['text' => 'Robot language changed.']);
$this->triggerCommand('start',$this->getArguments());
}
}
}
我的控制器命令解决方案是:
class TelegramBotController extends Controller
{
public function commandHandlerWebHook()
{
try
{
Telegram::addCommands([
Telegram\Bot\Commands\HelpCommand::class,
App\Telegram\Commands\StartCommand::class,
App\Telegram\Commands\ChangeLanguageCommand::class,
App\Telegram\Commands\ThingsToSendAdvertCommand::class,
App\Telegram\Commands\LuggageSpaceAdvertCommand::class,
]);
$commandsHandler = Telegram::commandsHandler(true);
$update =Telegram::getWebhookUpdate(['timeout' => 120]);
$chat_id = $update["message"]["chat"]["id"];
$data=$update["message"]["text"];
switch ($data) {
case 'تغییر زبان':
$command = "change_language";
$arguments =['fa'];
$res = Telegram::getCommandBus()->execute($command, $arguments, $commandsHandler);
break;
case 'Change Language':
$command = "change_language";
$arguments =['en'];
$res = Telegram::getCommandBus()->execute($command, $arguments, $commandsHandler);
break;
case 'راهنما':
$command = "help";
$arguments =[];
$res = Telegram::getCommandBus()->execute($command, $arguments, $commandsHandler);
break;
case 'Help':
$command = "help";
$arguments =[];
$res = Telegram::getCommandBus()->execute($command, $arguments, $commandsHandler);
break;
}
catch (\Exception $e)
{
dd($e->getMessage());
}
}
}
但它不起作用,我没有从机器人那里得到任何答案(机器人返回 200 状态)。 谁能帮帮我?
【问题讨论】:
标签: laravel telegram-bot