БОТ для отправки запросов от пользователя и согласования их с владельцем ⇐ Python
БОТ для отправки запросов от пользователя и согласования их с владельцем
Я пытаюсь создать бота с двумя ролями (ВЛАДЕЛЕЦ, ПОЛЬЗОВАТЕЛЬ), и теперь я застрял, как получить ответ на телеграмму с ответом от моей функции postgres list_users_with_request(), возможно, я делаю это неправильно.
[*]Пользователь может отправить запрос владельцу на одобрение. [*]Владелец может получить список пользователей, одобривших и утвердивших его или нет. [*]Пользователь получает сообщение о подтверждении/отклонении
psql
УДАЛЕНИЕ ТАБЛИЦЫ, ЕСЛИ СУЩЕСТВУЮТ пользователи; DROP TABLE IF EXISTS запросы; СОЗДАТЬ ТАБЛИЦУ пользователей ( user_id INT ВСЕГДА ГЕНЕРИРУЕТСЯ КАК ИДЕНТИЧНОСТЬ, имя_пользователя VARCHAR(255) НЕ NULL, ПЕРВИЧНЫЙ КЛЮЧ(user_id) ); Запросы CREATE TABLE ( Requests_id INT ВСЕГДА ГЕНЕРИРУЕТСЯ КАК ИДЕНТИЧНОСТЬ, user_id INT, Request_text ТЕКСТ НЕ NULL, request_approved VARCHAR(255) НЕ НУЛЬ, запрос_дата TIMESTAMP, ПЕРВИЧНЫЙ КЛЮЧ(requests_id), ОГРАНИЧЕНИЕ fk_users ВНЕШНИЙ КЛЮЧ (user_id) ССЫЛКИ пользователи (user_id) ПРИ УДАЛЕНИИ УСТАНОВИТЬ НУЛЬ ); ПРЕДОСТАВИТЬ ВСЕ НА ТАБЛИЦЕ public.users ДЛЯ удаленного_бота; # Добавить пользователя INSERT INTO пользователи(имя_пользователя) VALUES('user1'); # добавить запрос INSERT INTO запросы (user_id, Request_text, request_approved, request_date) VALUES (1, '29 сентября', 'NULL', CURRENT_TIMESTAMP); # утвердить запрос Запросы UPDATE SET request_approved = 'true' WHERE user_id = '1' AND request_approved = 'NULL'; # запрос списка ВЫБЕРИТЕ request_approved ИЗ запросов, ГДЕ request_approved НЕ НУЛЬ; # получить статус SELECT * FROM запросов WHERE AND user_id=1; импортировать asyncio журнал импорта импорт psycopg2 из импорта айограммы Бот, Диспетчер, Маршрутизатор, типы из aiogram.filters.command Команда импорта logging.basicConfig(уровень=logging.INFO) conn = psycopg2.connect(host="10.3.3.80", порт = 5432, база данных="remote_bot", user="remote_bot", пароль="QJchYuaK2jng4QjG") ТОКЕН = "123:123" бот = Бот(токен=ТОКЕН) дп = Диспетчер() #### КОМАНДЫ ВЛАДЕЛЬЦА @dp.message(Команда("list_requests")) асинхронное определение cmd_test1 (сообщение: типы.Сообщение): курсор = conn.cursor() курсор.execute("ВЫБЕРИТЕ request_approved ИЗ запросов, ГДЕ request_approved НЕ NULL;") пользователи = курсор.fetchall() await message.reply(f"Привет! {len(users)} пользователей ждут одобрения. - {(users)} ") @dp.message(Команда("approve_request")) асинхронное определение cmd_test1 (сообщение: типы.Сообщение): курсор = conn.cursor() курсор.execute("Запросы UPDATE SET request_approved = 'true' WHERE user_id = '1' AND request_approved='NULL';") await message.reply(f"Запрос одобрен.") ### КОМАНДЫ ПОЛЬЗОВАТЕЛЯ @dp.message(Команда("add_user")) асинхронное определение cmd_test1 (сообщение: типы.Сообщение): курсор = conn.cursor() курсор.execute("ВСТАВИТЬ В пользователей(user_name) ЗНАЧЕНИЙ('user1');") await message.reply(f"Пользователь добавлен.") @dp.message(Команда("add_request")) асинхронное определение cmd_test1 (сообщение: типы.Сообщение): курсор = conn.cursor() курсор.execute("INSERT INTO запросы(user_id, Request_text, request_approved,request_date) VALUES(1,'29 сентября','NULL',CURRENT_TIMESTAMP);") await message.reply(f"Запрос добавлен.") @dp.message(Команда("статус_запроса")) асинхронное определение cmd_test1 (сообщение: типы.Сообщение): курсор = conn.cursor() курсор.execute("выбрать * из запросов, где user_id=1;") await message.reply(f"Состояние запроса. {(users)}") асинхронное определение main() -> Нет: ожидайте dp.start_polling (бот) если __name__ == "__main__": асин
Я пытаюсь создать бота с двумя ролями (ВЛАДЕЛЕЦ, ПОЛЬЗОВАТЕЛЬ), и теперь я застрял, как получить ответ на телеграмму с ответом от моей функции postgres list_users_with_request(), возможно, я делаю это неправильно.
[*]Пользователь может отправить запрос владельцу на одобрение. [*]Владелец может получить список пользователей, одобривших и утвердивших его или нет. [*]Пользователь получает сообщение о подтверждении/отклонении
psql
УДАЛЕНИЕ ТАБЛИЦЫ, ЕСЛИ СУЩЕСТВУЮТ пользователи; DROP TABLE IF EXISTS запросы; СОЗДАТЬ ТАБЛИЦУ пользователей ( user_id INT ВСЕГДА ГЕНЕРИРУЕТСЯ КАК ИДЕНТИЧНОСТЬ, имя_пользователя VARCHAR(255) НЕ NULL, ПЕРВИЧНЫЙ КЛЮЧ(user_id) ); Запросы CREATE TABLE ( Requests_id INT ВСЕГДА ГЕНЕРИРУЕТСЯ КАК ИДЕНТИЧНОСТЬ, user_id INT, Request_text ТЕКСТ НЕ NULL, request_approved VARCHAR(255) НЕ НУЛЬ, запрос_дата TIMESTAMP, ПЕРВИЧНЫЙ КЛЮЧ(requests_id), ОГРАНИЧЕНИЕ fk_users ВНЕШНИЙ КЛЮЧ (user_id) ССЫЛКИ пользователи (user_id) ПРИ УДАЛЕНИИ УСТАНОВИТЬ НУЛЬ ); ПРЕДОСТАВИТЬ ВСЕ НА ТАБЛИЦЕ public.users ДЛЯ удаленного_бота; # Добавить пользователя INSERT INTO пользователи(имя_пользователя) VALUES('user1'); # добавить запрос INSERT INTO запросы (user_id, Request_text, request_approved, request_date) VALUES (1, '29 сентября', 'NULL', CURRENT_TIMESTAMP); # утвердить запрос Запросы UPDATE SET request_approved = 'true' WHERE user_id = '1' AND request_approved = 'NULL'; # запрос списка ВЫБЕРИТЕ request_approved ИЗ запросов, ГДЕ request_approved НЕ НУЛЬ; # получить статус SELECT * FROM запросов WHERE AND user_id=1; импортировать asyncio журнал импорта импорт psycopg2 из импорта айограммы Бот, Диспетчер, Маршрутизатор, типы из aiogram.filters.command Команда импорта logging.basicConfig(уровень=logging.INFO) conn = psycopg2.connect(host="10.3.3.80", порт = 5432, база данных="remote_bot", user="remote_bot", пароль="QJchYuaK2jng4QjG") ТОКЕН = "123:123" бот = Бот(токен=ТОКЕН) дп = Диспетчер() #### КОМАНДЫ ВЛАДЕЛЬЦА @dp.message(Команда("list_requests")) асинхронное определение cmd_test1 (сообщение: типы.Сообщение): курсор = conn.cursor() курсор.execute("ВЫБЕРИТЕ request_approved ИЗ запросов, ГДЕ request_approved НЕ NULL;") пользователи = курсор.fetchall() await message.reply(f"Привет! {len(users)} пользователей ждут одобрения. - {(users)} ") @dp.message(Команда("approve_request")) асинхронное определение cmd_test1 (сообщение: типы.Сообщение): курсор = conn.cursor() курсор.execute("Запросы UPDATE SET request_approved = 'true' WHERE user_id = '1' AND request_approved='NULL';") await message.reply(f"Запрос одобрен.") ### КОМАНДЫ ПОЛЬЗОВАТЕЛЯ @dp.message(Команда("add_user")) асинхронное определение cmd_test1 (сообщение: типы.Сообщение): курсор = conn.cursor() курсор.execute("ВСТАВИТЬ В пользователей(user_name) ЗНАЧЕНИЙ('user1');") await message.reply(f"Пользователь добавлен.") @dp.message(Команда("add_request")) асинхронное определение cmd_test1 (сообщение: типы.Сообщение): курсор = conn.cursor() курсор.execute("INSERT INTO запросы(user_id, Request_text, request_approved,request_date) VALUES(1,'29 сентября','NULL',CURRENT_TIMESTAMP);") await message.reply(f"Запрос добавлен.") @dp.message(Команда("статус_запроса")) асинхронное определение cmd_test1 (сообщение: типы.Сообщение): курсор = conn.cursor() курсор.execute("выбрать * из запросов, где user_id=1;") await message.reply(f"Состояние запроса. {(users)}") асинхронное определение main() -> Нет: ожидайте dp.start_polling (бот) если __name__ == "__main__": асин
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
React Fiber Это механизм рендеринга или механизм согласования в рамках рендеринга?
Anonymous » » в форуме Javascript - 0 Ответы
- 29 Просмотры
-
Последнее сообщение Anonymous
-