Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2018, 01:41   #1
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию Контроль списка участников бота Telegram.

Использую код с репозитория Telegram.Bot.

Для хранения списка участников, после получения сообщения от пользователя, сохраняю Message.Chat.Id в mdb.

Вопрос: как узнать, что конкретный ChatID еще "является участником" чата?


В Message есть свойства .NewChatMember и .LeftChatMember (https://core.telegram.org/bots/api#message) только всегда в результате события OnMessage получаю значения null.

Также есть метод GetChatMemberAsync базированый на (https://core.telegram.org/bots/api#getchatmember) которому в параметры передаются ChatID и userID, но не получается ничего.

Код:
private  Telegram.Bot.TelegramBotClient BOT;
BOT = new Telegram.Bot.TelegramBotClient("<BOT TOKEN>");
BOT.OnUpdate += BotUpdatesReceived;

 private async void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs)
{
     Telegram.Bot.Types.Message msg = messageEventArgs.Message;
     var chatNM = msg.NewChatMember;
     var chatLM = msg.LeftChatMember;
     var ChatID = msg.Chat.ID;
     var userInfo = BOT.GetChatMemberAsync("@####_bot", ChatID);
}
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 18.02.2018 в 15:44.
Aleksandr H. вне форума Ответить с цитированием
Старый 18.02.2018, 12:47   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

судя по суффиксу Async метод асинхронный.
было бы неплохо подождать результат.
Код:
var userInfo = await BIT.GetChatMemberAsync(...)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.02.2018, 16:07   #3
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Писал с async/await, только код с первого сообщения не рабочий, ошибка на строке
Код:
var userInfo = BOT.GetChatMemberAsync("@####_bot", ChatID);
Цитата:
An exception of type 'System.NullReferenceException' occurred in TelBot.exe but was not handled in user code
Additional information: Ссылка на объект не указывает на экземпляр объекта.
В браузере ввожу
Код:
https://api.telegram.org/bot<TOKEN>/getChatMember?chat_id=@XXXXbot&user_id=XXXXXXXXX
получаю
Код:
{"ok":false,"error_code":400,"description":"Bad Request: chat not found"}
Не отрицаю того что я могу в корне неверно понимать что такое бот и какие у него отличия от чата.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Telegram API PTyTb32 Общие вопросы Delphi 0 29.12.2017 12:30
Программа позволяющая вводить, хранить и обрабатывать информацию для учета участников Олимпиады. Формировать отчет количества участников по виду спорта. pocheto Общие вопросы C/C++ 9 06.06.2017 23:41
Бот в telegram Manr63 Свободное общение 1 28.02.2017 13:58
Создать бота на Python3 для telegram zxcvvbn Фриланс 1 20.01.2016 20:37
Задан список участников соревнований по фигурному катанию на коньках и их результаты. Расположить порядковые номера участников и р scarecrow_1 Паскаль, Turbo Pascal, PascalABC.NET 1 22.12.2015 09:59