from aiogram import types
from aiogram.dispatcher.filters import Filter, Command
class CommandNotInListFilter(Filter):
def __init__(self, commands: Command):
self.commands = commands
def check(self, message: types.Message) -> bool:
if not message.text.startswith('/'):
return False
return message.text[1:] in self.commands.commands
@dp.message_handler(
CommandNotInListFilter(Command(['start', 'help']))
)
async def handle_unknown_commands(message: types.Message):
await message.reply("Данной команды не существует!")
@dp.message_handler( filters.CommandStart() )
async def start( message: types.Message ):
await message.answer(
'hi',
reply_markup =
InlineKeyboardMarkup(row_width=1).add(
*[InlineKeyboardButton(text = "Apples", callback_='1'),
InlineKeyboardButton(text = "Oranges", callback_data='2'),
InlineKeyboardButton(text = "Beans", callback_data='3')]
)
)
from threading import Thread
from collections import namedtuple
import time
import typing
import random
Message = namedtuple('Message', ['delete_time', 'message_id'])
messages_to_delete: typing.List[Message] = []
def delete_message(message: Message):
print(f'Сообщение {message.message_id=} удалено')
messages_to_delete.remove(message)
def messages_deleter():
while True:
for message in messages_to_delete:
if message.delete_time - time.time() <= 0:
delete_message(message)
time.sleep(1)
if __name__ == '__main__':
thread = Thread(target=messages_deleter)
thread.start()
while True:
delete_time = time.time() + random.randint(1, 5)
messages_to_delete.append(
Message(delete_time=delete_time, message_id=random.randint(1, 1000))
)
time.sleep(1)