【问题标题】:callback_query from telegram (php)来自电报的回调查询(php)
【发布时间】:2022-01-17 23:42:38
【问题描述】:

我有一个工作正常的机器人,它可以正常工作并处理来自内联按钮的所有回调。问题是现在处理是这样完成的(只是一个例子):

if ($callback_data == 'save'){
    //some code
}
else if ($callback_data == 'connect'){
    //some code
}

等等。每个 if 块都处理内联键盘,问题是它们的数量正在增加。想请教一下,如何重构代码,避免以后出现很多if/else?

【问题讨论】:

  • 您可以使用switch,或interface/abstract(例如:在每个类中都有一个“处理”方法,例如保存、连接等)
  • 之前写过一个电报机器人,你是在问如何处理递增的事件调用/环回以进行编辑输入等?

标签: php architecture telegram


【解决方案1】:

电报机器人 api 有很多包装器。您可以使用westacks/telebot。它允许您创建比 if/else 语句更简洁的处理程序类:

<?php

namespace Somewhere\InYour\App;

use WeStacks\TeleBot\Interfaces\UpdateHandler;
use WeStacks\TeleBot\Objects\Update;
use WeStacks\TeleBot\TeleBot;

class YourUpdateHandler extends UpdateHandler
{
    public static function trigger(Update $update, TeleBot $bot): bool
    {
        return 'save' == ($update->callback_query->data ?? null);
    }

    public function handle()
    {
        $this->answerCallbackQuery([
            'text' => 'Saved!'
        ]);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多