CaliforniaMountainSnake / longmantelegrambot-inlinecalendar

This is the calendar in form of inline keyboard.
MIT License
0 stars 0 forks source link

InlineCalendar::showTextMessage() #1

Open ashkart opened 4 years ago

ashkart commented 4 years ago

Привет! В трейте нет такого метода, исполнение падает в этом месте, тк InlineCalendar::showCalendarMessage() возвращает null, хотя ожидается ServerResponse. Что там на самом деле должно быть? Вот код из трейта:

protected function showCalendarMessage(
        CalendarConfig $_config,
        string $_message_text,
        ?array $_errors = null,
        Keyboard $_keyboard = null
    ): ServerResponse {
        $this->setCalendarNotes($_config, [$this->getNoteNameIsFirstCalendarLaunch() => false]);
        return $this->showTextMessage($this->getNoteNameCalendarMsgId(), $_message_text, $_errors,
            $_keyboard);
    }
ashkart commented 4 years ago

UPD: Попробовал workaround, создал новый трейт, засунул в него трейт InlineCalendar, переопределил метод, чтоб он возвращал sendTextMessage(), который существует, возможно раньше он как раз назывался showTextMessage, но не попал в рефакторинг после переименования в api Longman'а, не знаю. Но теперь календарь рисуется и ничего не крашится.

<?php

namespace Application\Library\InlineCalendar;

use CaliforniaMountainSnake\InlineCalendar\CalendarConfig;
use Longman\TelegramBot\Entities\Keyboard;
use Longman\TelegramBot\Entities\ServerResponse;

trait InlineCalendar
{
    use \CaliforniaMountainSnake\InlineCalendar\InlineCalendar;

    protected function showCalendarMessage(
        CalendarConfig $config,
        string $messageText,
        ?array $errors = null,
        Keyboard $keyboard = null
    ): ServerResponse 
    {
        $this->setCalendarNotes($config, [$this->getNoteNameIsFirstCalendarLaunch() => false]);
        return $this->sendTextMessage($messageText, $errors, $keyboard);
    }
}