@DitaDev

Как сделать временное ограничение пользователя в aiogram?

Есть у меня команды в боте, например мута. Пишу команду, и выполняется:

await bot.restrict_chat_member(message.chat.id, message.reply_to_message.from_user.id, types.ChatPermissions(can_send_messages=False))

Но... Тут я просто ограничиваю пользователя, навечно! А мне нужно, чтобы на время. Вот, как это можно реализовать?

Вот код, если что:
import time
import logging
import config
from aiogram import Bot, Dispatcher, types, executor
from DataBase.DatabaseManager import DataBase

logging.basicConfig(level=logging.INFO)
db = DataBase('DataBase/database.db')
bot = Bot(token=config.Token)
dp = Dispatcher(bot)
chat_id = "-731258664"

@dp.message_handler(commands=["start", "pon"])
async def start(message: types.Message):
    await message.answer("Чё надо?")

@dp.message_handler(text='Авы Диты')
async def ditava(message: types.Message):
    photo = open('Photos/DitaAva.png', 'rb')
    await bot.send_photo(chat_id, photo)

@dp.message_handler(commands=["mute"])
async def mute(message: types.Message):
    if str(message.from_user.id) == config.admins:
        if not message.reply_to_message:
            await message.reply("Эта команда должна ОТВЕЧАТЬ на сообщение.")
            return
        await bot.restrict_chat_member(message.chat.id, message.reply_to_message.from_user.id, types.ChatPermissions(can_send_messages=False))
        await message.reply_to_message.reply(f"Пользователь замучен.")

@dp.message_handler(commands=["unmute"])
async def unmute(message: types.Message):
    if str(message.from_user.id) == config.admins:
        if not message.reply_to_message:
            await message.reply("Эта команда должна ОТВЕЧАТЬ на сообщение.")
            return
    await bot.restrict_chat_member(message.chat.id, message.reply_to_message.from_user.id, types.ChatPermissions(can_send_messages=True))
    await message.reply_to_message.reply(f"Пользователь теперь может писать!")

@dp.message_handler()
async def mess_handler(message: types.Message):
    text = message.text.lower()
    for word in config.words:
        if word in text:
            await message.delete()

    if not db.examination(message.from_user.id):
        db.add(message.from_user.id)
    if not db.mute(message.from_user.id):
        print("/")
    else:
        await message.delete()

@dp.message_handler(content_types=["new_chat_members"])
async def newmember(message: types.Message):
    await message.answer("Хай!)")

@dp.message_handler(content_types=["left_chat_member"])
async def leftmember(message: types.Message):
    await message.delete()

if __name__ == "__main__":
    executor.start_polling(dp)
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ответы на вопрос 1
@borisalekseev
extra beginner junior python backend
Есть всякие менеджеры задач, например celery. Одновременно с мутом запускай отложенную задачу размутить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы