一个应用程序中的几个机器人

时间:2017-10-20 16:39:32

标签: laravel telegram-bot

我使用laravel和sdk创建电报机器人。一切顺利。如何在同一个应用程序中添加另一个机器人?在protected $except = [ '437198700:XXXXXXXXXXXXXX_YYYYY/webhook' ]; 我添加

app/config/telegram.php

第一个机器人。并在'bot_token' => '437198700:XXXXXXXXXXXXXX_YYYYY',

`return [

//    'default' => 'common',


    'bots' => [
        'common' => [
            'username'  => 'MyTelegramBot',
            'token' => env('TELEGRAM_BOT_TOKEN'),
            'commands' => [
//                Acme\Project\Commands\MyTelegramBot\BotCommand::class
            ],
        ],
        'second' => [
            'username'  => 'MySecondBot',
            'token' => env('TELEGRAM_MANAGER_BOT_TOKEN'),
        ],
    ],

向上。我将此添加到配置但仍然是同样的问题

$bots_manager= new BotsManager($config);

更新:我添加此$bots_manager = $bots_manager->bot('second'); $ config看起来像config我尝试拨打Bot [second] not configured.返回错误DELETE FROM table2 WHERE NOT EXISTS (SELECT a.pnr, a.dmax FROM table1 a WHERE a.pnr = table2.pnr AND a.dmax = table2.dt)我做错了什么?

2 个答案:

答案 0 :(得分:0)

我只是把它作为一个数组放在我的telegram.php配置中:

'bot_tokens' => [
    TOKEN1,
    TOKEN2,
    // Other bot tokens here
]

然后在我的VerifyCsrfToken.php文件中,$excluded变量将是:

protected $excluded = [
    BOT_ROUTE1,
    BOT_ROUTE2,       
];

我很想知道你在多个电报机器人的应用程序中寻找什么?

答案 1 :(得分:0)

使用BotManager

你应该为每个机器人创建Bot类实例。然后使用BotManager方法按名称或令牌管理bot。

这是我的Python3示例,但它类似的问题

class Bot(Resource):

    bots = {}

    def __init__(self, token):
        self.updater = Updater(token)
        self.bots[token] = self

    @classmethod
    def getInstance(cls, token):
        return cls.bots[token]

    def start_bot(self):
        self.updater.start_polling()

    def stop_bot(self):
        self.updater.stop()


#####################################

bots = Bots.query.all()
if bots:
    for bot in bots:
        tb = Bot(bot.token)
        tb.start_bot()

bot = Bot.getInstance(bot.token)
bot.stop_bot()