from __future__ import annotations  # todo0 remove in 3.11

__all__ = ['Message']

from dataclasses import dataclass, field
from typing import Iterable

from flanautils import Media, OrderedSet
from multibot.models import Message as MultiBotMessage, User

from flanabot.models.chat import Chat
from flanabot.models.weather_chart import WeatherChart


@dataclass(eq=False)
class Message(MultiBotMessage):
    author: User = None
    button_pressed_user: User = None
    mentions: Iterable[User] = field(default_factory=list)
    chat: Chat = None
    replied_message: Message = None
    weather_chart: WeatherChart = None
    song_infos: OrderedSet[Media] = field(default_factory=OrderedSet)
