
@LyoSU
29.08.2017
11:03:08
У меня стикеры часто долго грузятся из за интернета. Ждал, пока не нажал и не прочитал название

Леонид
29.08.2017
11:04:11
Всем привет. Подскажите, как реализовать в боте, при первоначальном запуске ввод данных от пользователя (например название города), а потом обрабатывать все сообщения с помощью слушателя?

Mercuree
29.08.2017
11:05:38

@LyoSU
29.08.2017
11:08:18

Google

Леонид
29.08.2017
11:13:51
Ну все четко расписано, так и делай
Да не все так просто...
Зашел первый раз в бота, идет приветсвие (/start) + отдельная кнопка на ввод города через callback, нажимаешь на кнопку, просит ввести город (этот ввод попадает в базу данных к примеру)
Далее идет работа с обработкой простых запросов. - это в идеале.
Так вот дело в том, что не получается организовать ввод города из-за того, что слушатель сообщений (handler) выдергивает и обрабатывает абсолютно все поступающие сообщения и тот же введенный город начинает обрабатываться.

Savely
29.08.2017
11:14:16

?
29.08.2017
11:14:32

Леонид
29.08.2017
11:14:41

Savely
29.08.2017
11:14:43
Это самый популярный вопросик в этом чате, напишите уже гайд кто-нибудь, пожалуйста.

Kiku
29.08.2017
11:14:53

Savely
29.08.2017
11:15:31
Не обязательно в базе
ForceReply – Upon receiving a message with this object, Telegram clients will display a reply interface to the user (act as if the user has selected the bot‘s message and tapped ’Reply'). This can be extremely useful if you want to create user-friendly step-by-step interfaces without having to sacrifice privacy mode.
https://core.telegram.org/bots/api#forcereply

?
29.08.2017
11:15:54

Savely
29.08.2017
11:15:58
Либо FSM, либо ForceReply.
Иначе никак.

Dmitry
29.08.2017
11:16:16
а бот может слать «нотисы» без «необходимости» нажимать на кнопку? (как спойлербот)

Savely
29.08.2017
11:16:27

Google

?
29.08.2017
11:18:27
Хранить мусор в базе не особо хочется

Kiku
29.08.2017
11:21:01
база есть а оптимизации нет

foxy shell
29.08.2017
11:22:42
Могу ли я получить список участников канала через бота?

Проксимов
29.08.2017
11:23:08

Dmitry
29.08.2017
11:23:09
только через CLI

Проксимов
29.08.2017
11:23:15

Mad
29.08.2017
11:23:29
Что такое CLI?

Проксимов
29.08.2017
11:23:43

foxy shell
29.08.2017
11:23:45
А группы?

Проксимов
29.08.2017
11:23:57

Mad
29.08.2017
11:24:09

Dmitry
29.08.2017
11:24:11
а. стоп. перепутал. канала можно, если админ. группы — можно.

Viktor
29.08.2017
11:24:35
Вот вам список всех MTProto библиотек, о которых я знаю

Проксимов
29.08.2017
11:24:39

foxy shell
29.08.2017
11:24:44

Viktor
29.08.2017
11:24:49
Вот вам список всех MTProto библиотек, о которых я знаю
Python - https://github.com/LonamiWebs/Telethon
Rust - https://github.com/JuanPotato/Vail
Rust - https://github.com/Connicpu/mtproto-rs
PHP - https://github.com/danog/MadelineProto
Kotlin - https://github.com/badoualy/kotlogram
JavaScript - https://github.com/zerobias/telegram-mtproto
C - https://github.com/vysheng/tg, https://bitbucket.org/vysheng/tdcli
Elixir - https://gitlab.com/snippets/1664390
C# - https://github.com/unigramdev/unigram
Elixir — https://github.com/Fnux/telegram-mt-elixir and https://github.com/Fnux/telegram-tl-elixir

Mad
29.08.2017
11:25:01
Это понятно, но мне был дан ответ, что CLI эжто Telegram Client API

Dmitry
29.08.2017
11:25:06

Mad
29.08.2017
11:25:07
Вот я и пытаюсь понять, как так

Google

Проксимов
29.08.2017
11:25:25

foxy shell
29.08.2017
11:25:26
Брань

Viktor
29.08.2017
11:26:03

Dmitry
29.08.2017
11:26:05

foxy shell
29.08.2017
11:26:10

Viktor
29.08.2017
11:26:12

Dmitry
29.08.2017
11:26:20

Viktor
29.08.2017
11:26:26
Нет
Про бота ему и сказали

foxy shell
29.08.2017
11:27:22

Проксимов
29.08.2017
11:27:32
Так в итоге как вытащить всех юзеров группы?

Viktor
29.08.2017
11:27:44
channel.getParticipants

Dmitry
29.08.2017
11:27:52
Каким образом?
ну вот, например
TLRequestChannelsGetParticipants req = new TLRequestChannelsGetParticipants();
TLInputChannel chan = new TLInputChannel();
chan.setChannelId(chat.getId());
chan.setAccessHash(chat.getAccessHash());
req.setChannel(chan);
req.setLimit(1000);
req.setOffset(0);
req.setFilter(new TLChannelParticipantsFilterRecent());
TelegramApi api = kernelComm.getApi();
api.doRpcCall(req, new RpcCallback<TLChannelParticipants>() {

Viktor
29.08.2017
11:27:59
итерируете с limit=200, offset=0,200,400+++

Savely
29.08.2017
11:28:01

Viktor
29.08.2017
11:28:04

Savely
29.08.2017
11:28:19
Так что придется циклом N раз пройтись в зависимости от размера.

Проксимов
29.08.2017
11:28:29

Viktor
29.08.2017
11:28:29

Savely
29.08.2017
11:28:37

Google

Проксимов
29.08.2017
11:28:40
А я про группу спрашиваю

Viktor
29.08.2017
11:28:47
а я тебе про группу и говорю
только про супергруппу

Проксимов
29.08.2017
11:29:06
Channel - это канал, а не группа же

Viktor
29.08.2017
11:29:07
или тебе старые группы нужны?

Savely
29.08.2017
11:29:14
Супергруппы в телеге это подвид каналов.

Viktor
29.08.2017
11:29:15
подучи матчасть плес

Проксимов
29.08.2017
11:29:46

Admin
ERROR: S client not available

Проксимов
29.08.2017
11:29:52
Схему надо

Savely
29.08.2017
11:29:56

AbduCOM
29.08.2017
11:29:59

Savely
29.08.2017
11:30:06
Потыкай MTProto хотя бы вечерок.
Быстро разберешься.

Проксимов
29.08.2017
11:30:23

Viktor
29.08.2017
11:30:43
messages.getFullChat для обычных групп
там будет participants

Savely
29.08.2017
11:31:07
Хз, у меня на 500 чатов осталась одна обычная группа.

Проксимов
29.08.2017
11:31:27

Savely
29.08.2017
11:31:43

Google

Viktor
29.08.2017
11:31:44
ААААА.
да он троллит наверное

Savely
29.08.2017
11:32:02
Супергруппы в телеге это подвид каналов.

Viktor
29.08.2017
11:32:05

Проксимов
29.08.2017
11:32:20

Viktor
29.08.2017
11:32:26
ДА БЛЯДЬ.
еще разок попробую

Savely
29.08.2017
11:33:09
У меня не работает
Сначала getDialogs, получаешь id и хэш нужной группы. Потом ставишь нужный фильтр (recent), оффсет и лимит 200, и дергаешь getParticipants.

Viktor
29.08.2017
11:33:23
есть обычные группы, есть супергруппы.
для обычных групп, ака чатов, — messages.getFullChat
для супергруп, ака мегагруп, ака каналов — channel.getParticipants
правда можно id и хэш по-другому получить, но так все верно

Savely
29.08.2017
11:34:12
Если он есть)
По другому хз как, особо не заморачивался.

Viktor
29.08.2017
11:34:52
Можно даже посмотреть в другом клиенте
id/hash одинаковые для всех приложений и сессий
хотя мне даниил говорил, что видел, как они бывают разными ?
или это был Fela, не помню.
я лично никогда этого не видел, и вообще в этом сомневаюсь.