Для использования асинхронной функции в `threading.Timer()`, вы можете воспользоваться модулем `concurrent.futures`.
Вот пример работы кода:
```python
import threading
import asyncio
from concurrent.futures import ThreadPoolExecutor
# Асинхронная функция, которую вы хотите выполнить
async def do_something(data):
print(f"Doing something with {data}")
await asyncio.sleep(1)
print("Done")
# Функция, которая запускает асинхронную функцию с помощью event loop
def run_async(func, args=()):
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
result = loop.run_until_complete(func(*args))
loop.close()
return result
# Функця отправки уведомления
async def send_notification(user_id):
await asyncio.sleep(1)
print(f"Sending notification to user {user_id}")
# Функция, которая аннулирует ссылку, выполняет отправку уведомления и устанавливает новый таймер
def cancel_link_and_notify(user_id, link):
print(f"Cancelling link {link} for user {user_id}")
# Отправляем уведомление асинхронно
asyncio.create_task(send_notification(user_id))
# Получаем текущий event loop
loop = asyncio.get_event_loop()
# Запускаем новый таймер после заданного времени
timer = threading.Timer(5.0, run_async, args=(do_something, (link,)))
timer.start()
# Пример использования
cancel_link_and_notify(123, "example.com/invite")