Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dialog for user in multiuser chat #34

Closed
Tishka17 opened this issue Mar 7, 2021 · 11 comments · Fixed by #340
Closed

Dialog for user in multiuser chat #34

Tishka17 opened this issue Mar 7, 2021 · 11 comments · Fixed by #340
Labels
core Something, that affects core functionality enhancement New feature or request help wanted Extra attention is needed
Milestone

Comments

@Tishka17
Copy link
Owner

Tishka17 commented Mar 7, 2021

в диалогах встроить возможность диалог открыть для юзера или для чата. То есть записать user_id в Intent и при обработке сообщений/кликов проверять его

@Tishka17 Tishka17 added enhancement New feature or request help wanted Extra attention is needed core Something, that affects core functionality labels Mar 7, 2021
@Tishka17
Copy link
Owner Author

Tishka17 commented Apr 8, 2021

будет актуально для stateless диалогов

@Tishka17
Copy link
Owner Author

диалог запоминает intent_id который валиден только для одного юзера.

Возможна реализация обратной функциональности: диалоги, доступные всем.

@Tishka17
Copy link
Owner Author

Use case: подскажите, как можно реализовать бота для опросов: текст опроса, ниже кнопки с выбором ответов, а после нажатия бот возвращает соотношение проголосовавших( условно, да 70%, нет30%)

@arrenanv
Copy link

Сделать диалоги доступными для всех:
Сценарий использования: Развлекательный бот для создания лобби пользователей в группе (текст с пользователями в лобби, кнопки для присоединения/выхода из него) и последующей работы с ними (True Mafia к примеру).

@cfytrok
Copy link

cfytrok commented Jan 22, 2023

Кейс по диалогам, доступным всем. Пример: сбор денег на подарок босу. В групповом чате висит окно с сводной информацией из базы (сколько денег собрано). Кнопки запускаю диалоги в привате, которые позволяют менять данные на основе которых формируется сводка. В примере - пользователь может указать сумму, которую он может выделить на подарок. После создания взноса сводка обновляется.
Сейчас в aiogram-dialog зачем-то данные хранятся на уровне пользователя. Чтобы кнопки работали в групповых чатах, пришлось добавили патч, который позволяет хранить данные только для чатов.

@Tishka17
Copy link
Owner Author

Techincal details:

  • need to undarstand if a dialog is started for all/single user (what about multicast?)
  • event isolation

@cfytrok
Copy link

cfytrok commented Jan 22, 2023

Кейс модерация. Пользователь добавляется в групповой чат. В отдельном чате администраторов(2-3 человека) всплывает диалог с карточкой пользователя. Любой администратор может отклонить пользователя или одобрить его по кнопке. Можно так же открыть по кнопке подробный профиль пользователя (переключение на следующее окно).

@ZeN220
Copy link

ZeN220 commented Feb 19, 2023

Юзкейс настройки многопользовательской игры: в чат отправляется сообщение, к которому прикреплены инлайн-кнопки. Они работают по принципу Radio виджета. То есть для игры есть несколько параметров настройки и для каждого из них есть список вариантов, из которых выбирается один конкретный.

С диалогом взаимодействует 1 пользователь

@metya
Copy link

metya commented Mar 2, 2023

Юзкейс.
Нужно показывать в общем чате диалог с разным текстом на разные кнопки, так, чтобы все могли наживать на кнопки и получать текст соответствующий кнопке. Например, это описание какого то продукта в чате.

@bkvalexey
Copy link

Тут бы такие моменты продумать:

  1. Обработчик нажатия не тем пользователем
  2. Возможность нажатия любым пользователем
  3. Возможность передачи диалога от одного пользователя другому и/или по порядку нескольким пользователям

Думаю покрыло бы любой кейс

@andrew000
Copy link

andrew000 commented Mar 22, 2023

Юзкейс: Личный диалог для "игрока" в глобальном чате. (Например профиль/инвентарь)

  • Диалог без свойства "Always on top", чтобы при обычных сообщениях от юзера - диалог оставался там где был вызван. По сути чтобы не был "Always on top"

  • Свойство "игнорировать" текстовые сообщения/команды и пропускать их дальше, чтобы бот мог отвечать на них даже во время диалога. Диалог при этом остаётся активным, но не мешает пользоваться другими командами бота постоянно вылезая в "top of messages".

  • В случае вызова нового диалога - (завершать старый) или (начинать диалог с того же места где остановился юзер в старом диалоге), в зависимости от настроек.

  • Также обязательное свойство пропускать CallbackQuery, которые не принадлежат диалогу, дальше на обработку. Чтобы если у юзера открыт диалог и ещё какое-то сообщение с кнопками, которое не принадлежит диалогу - то чтобы бот мог обрабатывать колбеки от кнопок в этом сообщении.

  • Дополнительно обработка нажатий от "не владельцев" диалога. Диалог может быть: "личным", "групповым (для всех в чате)", "для конкретных юзеров (по сути фильтрация по каким-то атрибутам, например наличие админки, или соответствие по List[User.id])"

Upd: Пример использования в группе:

  • Личный диалог для конкретного пользователя в группе. Диалог показывает окно с "инвентарём" игрока. Есть возможность переключатся между типами показываемых предметов (ресурсы, оружие, тд), (разные стейты/окна по сути). Сообщение диалога не должно быть "Always on top", чтобы не мешать другим игрокам в группе.

@Tishka17 Tishka17 added this to the 3.0 milestone Aug 28, 2023
@Tishka17 Tishka17 mentioned this issue Nov 26, 2023
9 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
core Something, that affects core functionality enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants