Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Питон, дартНесколько модулей(несколько исполняемых файлов)Модуль инициализация:- загрузить бд sqlite из файла database.db- создать таблицы если таких нет, и добавить поля если таких нет.Таблицы:- config, id(primary key), name(string), value(string) значения: mailingChatId, codeWord, botToken, pseudoBotToken, - admins, id, userId, messageForMailing- codeWords, id(primary key), value(string)- users, id, userId(string), token(string), isExpired(boolean), proxyId(int), lastSentMessageTime(uint64)- proxies, id, value(string)- receivedMessages, id, userId, toSend, другие необходимые поля, текст, bProcessedМодуль bot: while bot: - начать слушать сообщения , которые пишут боту 1. первое сообщение должно быть кодовое слово config.get(codeWord) если кодовое слово неправильное, то написать "Кодовое слово неверно", и слушать дальше пока не будет правильное - либо же если админ уже проходил идентификацию, то пропускать этот пункт 2. когда кодовое слово правильное, то разрешить обработку сообщений от этого пользователя, и записать его в db.admins 3. кнопки Изменить псевдо-бота - бот который через user api работает - реализовать авторизацию user api, + возможность прокси задать, + информация об ошибке Изменить mailingChatId - меняем в конфиге Добавить пользователя - реализовать авторизацию user api, + возможность прокси задать, + информация об ошибке - задать текст для отправки и запомнить, потом его записывать в receivedMessages.toSend Добавить кодовое слово/убрать/вывести список: - работа с таблицей codeWords while mailingChatId: 1. ожидаем сообщение. если сообщение было переслано от кого-то то добавляем кнопки: - записать: добавить forwardedMessage.userId в receivedMessages, удалить сообщение и кнопки - удалить: удалить сообщение и кнопки 2. если любое другое сообщение - писать что непонятная командаМодуль pseudoBot: - проверять папки юзера каждые 10 секунд while true: - проверяем сессию из сonfig.pseudoBotToken - брать все чаты из папки "Рассылка" - слушать каждый чат на наличие кодовых слов(lowercase(msg).contains(lowercase(codeWord))) - при обнаружении отправляем в mailingChatIdМодуль process_messages (telethon):- загрузить юзеров- цикл в котором выбираем receivedMessages.bProcessed == falseпроверить список сессий, задать значение истекла сессия или нет. И обновить в бд + информация в чат что сессия неактивна- выбрать аккаунт у которого (текущая дата - lastSentMessageTime > 180 секунд), если аккаунта нет, то ждать пока появится- отправить сообщение пользователю (при помощи user api)- задать bProcessed = true и обновить в бд

https://docs.google.com/document/d/1M9gOsAK4QEC8sewmzi-MC2xdVPAOpd2pscmXiHwGq5s/edit?usp=sharing

год назад
Ddeeeennn
Денис 
21 годУкраина
6 лет в сервисе
Был
2 месяца назад