Telegram-бота интеграции для Patreon и дергаться, чтобы просмотреть список участников чата
Всем привет,
Недавно я вошел в сообщество, которое хочет создать Telegram-бота, который должен интегрироваться с подписчиками Twitch и Patreon. Бот уже создан и работает, размещен на Heroku. Мы использовали это Соаток/безголовый-lounge-bot чтобы настроить нашего бота.
Что он делает? Он проверяет, когда пользователь пытается войти в чат telegram, и если у пользователя есть активная подписка на канал Twitch или на Patreon (или и то, и другое, зависит от того, как вы создаете чат), то он разрешает/запрещает доступ к чату. Это работает без каких-либо проблем, но мы также хотим создать команду и запланированное событие, которое проверяет внутри чата, какие пользователи имеют истекшие подписки, а затем пинает их. Проект, который я связал, использует тонкий фреймворк, который никому из нас не известен, и здесь начинаются проблемы. Как мы можем достичь нашей цели? Неужели кто-то так добр, чтобы помочь нам?
Что я уже пробовал:
I already tried to add a new command to the Telegram class, that is dedicated to manage all the events concerned Telegram. The command I added prints how many subscribers has the Twitch channel using the Twitch object created inside the Telegram constructor, but I always had an empty Twitch object (the Twitch object is used to communicate with Twitch API's) so it doesn't work. I can't figure it out how to create the Twitch object correctly to use it to get the info that I want. Also I don't understand where the Telegram class is created, I suppose Slim does it but I don't know in which part of the code. I also tried with Patreon but the result is the same, empty object.
Richard MacCutchan
Извините, но никто здесь не может догадаться, что делает ваш код. Пожалуйста, предоставьте надлежащие подробности и объясните, где происходят сбои.
Needle_Ago
Я стараюсь идти более глубоко. Существует класс Telegram, который предназначен для управления всеми событиями telegram в чате. Внутри этого класса используется признак, подключенный к событиям нового сообщения (называется NewMessageTrait). Класс Telegram имеет конструктор, который, помимо всего прочего, заполняет 2 свойства с именами Twitch и Patreon. Эти 2 свойства создаются как объект, объекты определяются внутри класса Twitch и класса Patreon. Моя проблема заключается в том, что когда я пытался использовать эти свойства внутри класса Telegram, они были пусты, поэтому я не могу правильно использовать их методы.
Из-за того, что я не знаю, как работает Slim framework, я не могу понять, когда и где создается класс Telegram и почему я получаю эти 2 объекта всегда пустыми.
Надеюсь, я выразился предельно ясно.
Richard MacCutchan
Извините, но мы понятия не имеем, что такое класс Telegram и что он делает. Вы проверили его документацию, чтобы убедиться, что используете правильные вызовы методов? Вы использовали свой отладчик для отслеживания того, что происходит при запуске кода?
Needle_Ago
Я предоставил ссылку на РЕПО в своем вопросе, вы можете увидеть на github, что делает класс Telegram, он находится в src/HeadlessLoungeBot.
К сожалению, документация очень плохая, и да, я использую отладчик для отслеживания поведения кода, но я не знаю, как работает Slim framework после команды $app->run ();, поэтому отладка для меня не так проста.
Richard MacCutchan
Извините, но если вы не можете показать код, вызывающий проблему, и точно объяснить, что происходит, мы мало чем можем вам помочь.
Needle_Ago
Извините, я не понял, что вы хотите увидеть мой код!
Это простая новая команда "/testTwitch", которую я добавил в класс Telegram:
public function getTwitchSubscribers(int $chatId, int $channelID) { $tw = $this->twitch->forChannel(channelID); $subs = $tw->getSubscribers(); return $this->sendMessage( 'There are ' . count($subs) . ' Twitch users subscribed to this channel.', ['chat_id' => $chatId] ); }
Моя проблема в том, что $tw пуст, и если я использую отладчик для печати $this->twitch, он пуст. Но я не могу понять, где в коде создается объект twitch, или, лучше сказать, где создается весь класс Telegram. Еще раз извините за недоразумение!
Richard MacCutchan
"Но я не могу понять, где в коде создается объект twitch, или лучше, где создается весь класс Telegram."
Ну, я боюсь, что мы никак не можем догадаться, где эти вещи происходят. Вам нужно поговорить с людьми, которые создали код, с которым вы пытаетесь интегрироваться.
Needle_Ago
Я уже отправил ему электронное письмо 3 недели назад, но пока нет ответа. И я полагаю, что он никогда не ответит мне, потому что РЕПО больше не поддерживается, это реальная проблема, иначе я бы попросил реализовать эту функцию. Я новичок в telegram bot, и это самая близкая вещь, которую я нашел, которая использует Twitch и Patreon, написанные на PHP.
Richard MacCutchan
Извините, но я предлагаю вам найти лучший продукт.
Needle_Ago
Я постараюсь, спасибо за терпение!