Size: a a a

Сообщество Python Программистов

2020 March 19

l

let45fc in Сообщество Python Программистов
Могу свой пагинатор скинуть
источник

AE

A.Krasilnikov Emotev... in Сообщество Python Программистов
Никита Хмель
может кто-то может взглянуть на архитектуру приложения вк и объяснтиь, как оно "подымается"
https://drive.google.com/file/d/11swLJI9UOvSF0jJ-TlvPccLVoxABJaZA/view?usp=sharing
само приложение:
https://vk.com/app7130646_469324579

А то я что-то вообще поплыл, там из фроентенда только 1 index.html, и мне вот совсем непонятно как оно с бекендом общается.
на жангу похоже
источник

П

Паша in Сообщество Python Программистов
Я все ищу, но именно про пагинаторы не могу найти.
источник

П

Паша in Сообщество Python Программистов
let45fc
Могу свой пагинатор скинуть
Буду рад)
источник

𝕬

𝕬𝖗𝖙𝖊𝖒 in Сообщество Python Программистов
Бензофуран Гетероцикл
От проекта же зависит
Ну, допустим, это приложение а ля Убер-приложение в телеграме от Убера🌚
источник

l

let45fc in Сообщество Python Программистов
источник

НХ

Никита Хмель... in Сообщество Python Программистов
Паша
Кто-нибудь пагинацию для ТГ бота через кнопки делал? Как это правильно делается? Начал через изменения сообщения и фиксацию нажатий на кнопку, но фиксировать количество нажатий не получается.
Я обычно храню все элементы меню в БД (каждую кнопку) и за счёт этого достаточно при нажатии на "следующую страницу" например, просто подгружать из бд следующее 5 кнопок и отдавать их пользователю
источник

НХ

Никита Хмель... in Сообщество Python Программистов
но можно ещё с помощью "ссылок", когда кнопка хранит данные о следующей странице
источник

l

let45fc in Сообщество Python Программистов
Никита Хмель
но можно ещё с помощью "ссылок", когда кнопка хранит данные о следующей странице
Я обычно так и делаю
источник

l

let45fc in Сообщество Python Программистов
Никита Хмель
Я обычно храню все элементы меню в БД (каждую кнопку) и за счёт этого достаточно при нажатии на "следующую страницу" например, просто подгружать из бд следующее 5 кнопок и отдавать их пользователю
Опиши получше алгоритм, я не понял как это работает
источник

l

let45fc in Сообщество Python Программистов
Никита Хмель
но можно ещё с помощью "ссылок", когда кнопка хранит данные о следующей странице
У меня кнопка только номер следующей страницы хранит
источник

П

Паша in Сообщество Python Программистов
Спасибо
источник

l

let45fc in Сообщество Python Программистов
Паша
Спасибо
👌
источник

НХ

Никита Хмель... in Сообщество Python Программистов
let45fc
Опиши получше алгоритм, я не понял как это работает
- Каждый пункт меню (обычно это кнопка) хранится в виде записи в БД.
- У этой записи есть parent_id (ид родителя)
- При нажатии кнопки, подтягиваются все кнопки, у которых родитель == ид'у нажатой кнопки, таким образом есть древовидность.
- Сверху ещё пагинация, работает примерно так, что кнопка "Следующая страница" хранит +1 page_number, от текущей пользователя или -1 если назад. Ну и есть обработчик, который при нажатии подгружает следующую пачку кнопок.

И ещё мы храним данные о текущем меню пользователя в БД
А ещё это быстро работает с redis и лучше с ним это делать

Ну и плюсы такого подхода на мой взгляд:
1) Челик всегда будет там, где он есть и не сможет за счёт какого-то бага перейти в меню, в которое бы он не мог попасть, не пройдя определенный путь
2) Можно просто вбивать данные в БД и они уже в боте
3) Можно каждому пунтку меню добавить данные о том, к какому модулю они относятся и там описывать эту часть бота
источник

l

let45fc in Сообщество Python Программистов
Никита Хмель
- Каждый пункт меню (обычно это кнопка) хранится в виде записи в БД.
- У этой записи есть parent_id (ид родителя)
- При нажатии кнопки, подтягиваются все кнопки, у которых родитель == ид'у нажатой кнопки, таким образом есть древовидность.
- Сверху ещё пагинация, работает примерно так, что кнопка "Следующая страница" хранит +1 page_number, от текущей пользователя или -1 если назад. Ну и есть обработчик, который при нажатии подгружает следующую пачку кнопок.

И ещё мы храним данные о текущем меню пользователя в БД
А ещё это быстро работает с redis и лучше с ним это делать

Ну и плюсы такого подхода на мой взгляд:
1) Челик всегда будет там, где он есть и не сможет за счёт какого-то бага перейти в меню, в которое бы он не мог попасть, не пройдя определенный путь
2) Можно просто вбивать данные в БД и они уже в боте
3) Можно каждому пунтку меню добавить данные о том, к какому модулю они относятся и там описывать эту часть бота
+
источник

НХ

Никита Хмель... in Сообщество Python Программистов
но это обычно идеально для магазов или просто ботов где часто меняются какие-то пункты меню или нужно строго контролировать доступ, например в игровых ботах, чтобы чел не убежал с поля боя например)
источник

НХ

Никита Хмель... in Сообщество Python Программистов
не уверен насчёт телеги, но в вк подделать кнопку с json изи можно
источник

l

let45fc in Сообщество Python Программистов
Никита Хмель
не уверен насчёт телеги, но в вк подделать кнопку с json изи можно
Не слышал чтоб таким вообще занимались в тг, надо бы посмотреть как выглядит кнопка из юзерского апи в тг
источник

НХ

Никита Хмель... in Сообщество Python Программистов
https://vk.me/cosmocatsbot поклацать мона тут
источник

R3

Rud 356 in Сообщество Python Программистов
Бензофуран Гетероцикл
Ну так ты попробуй рассказать как оно будет работать
Ок, в общем для бд будет Монга потому, что мне надо списки и без них начинается пиздец какая ебля с взаимоотношениями пользователей и т.п.
Юзер будет иметь поля айди, имя, токен. Пикчу буду хранить в отдельной папке под айдишником юзера и потом менять со временем.
Еще с юзером идет поле в базе его отношений с другими юзерами:
0 - запрос
1 - в друзьях
2 - заблочен
По этим статусам проверяется можно ли добавить кого-то в друзья еще или написать (только друзья могут отправить что-то в лс)
Еще с юзером вытягивается список серверов где он есть и групповых лс из другой коллекции пожалуй с членами каких-то каналов/серверов и их позиции

Members соответственно будут с полями: айди юзверя от которого он создан, айди чата/сервера, где он, время вступления, его роли (при наличии) в виде айдишников и пересчитанные разрешения

Channels с полями: айди, тип, последнее сообщение, а дальше опциональные поля: название (у личных сообщений может не быть), хозяин, от какого сервера канал, nsfw (является ли 18+), тема канала, позиция канала на сервере, перезаписи разрешений каналов

Server собирает несколько каналов и у него поля: айди, хозяин, список айди каналов, айдишники роли, количество вступивших, время создания, список забаненых людей по айди и причины бана, эмоджи
Роли соберут у себя: айди, цвет, разрешения по серверу

Личные сообщения будут просто сообщения, где в качестве каналов для пользователя будут показаны отправители этих сообщений

У сообщений: айди, айди канала получателя, айди автора, время получения сообщения сервером (который как раз принимает сообщения), закреплено ли сообщение, приложения в виде ссылок на картинки или файлы внутри приложения с указанием его типа и имени в виде списка, реакции добавленные к сообщению

Таблица инвайтов еще понадобится: короткая приписка в линке на инвайт и привязка к айдишнику сервера/группового чата
источник