/// 聊天机器人 Domain 实体
class ChatBot {
  final int id;
  final String? name;
  final String? username;
  final int? botUserId;
  final String? icon;
  final String? iconGaussian;
  final String? description;
  final String? token;
  final int? flag;
  final int? status;
  final String? webhook;
  final String? commands;
  final String? banner;
  final int? channelId;
  final int? channelGroupId;
  final int? deletedAt;
  final String? internalWebhook;
  final int? mode;
  final String? redirectUrl;
  final int? isInvitable;
  final int? isAllowForward;
  final String? tips;

  const ChatBot({
    required this.id,
    this.name,
    this.username,
    this.botUserId,
    this.icon,
    this.iconGaussian,
    this.description,
    this.token,
    this.flag,
    this.status,
    this.webhook,
    this.commands,
    this.banner,
    this.channelId,
    this.channelGroupId,
    this.deletedAt,
    this.internalWebhook,
    this.mode,
    this.redirectUrl,
    this.isInvitable,
    this.isAllowForward,
    this.tips,
  });

  ChatBot copyWith({
    int? id,
    String? name,
    String? username,
    int? botUserId,
    String? icon,
    String? iconGaussian,
    String? description,
    String? token,
    int? flag,
    int? status,
    String? webhook,
    String? commands,
    String? banner,
    int? channelId,
    int? channelGroupId,
    int? deletedAt,
    String? internalWebhook,
    int? mode,
    String? redirectUrl,
    int? isInvitable,
    int? isAllowForward,
    String? tips,
  }) {
    return ChatBot(
      id: id ?? this.id,
      name: name ?? this.name,
      username: username ?? this.username,
      botUserId: botUserId ?? this.botUserId,
      icon: icon ?? this.icon,
      iconGaussian: iconGaussian ?? this.iconGaussian,
      description: description ?? this.description,
      token: token ?? this.token,
      flag: flag ?? this.flag,
      status: status ?? this.status,
      webhook: webhook ?? this.webhook,
      commands: commands ?? this.commands,
      banner: banner ?? this.banner,
      channelId: channelId ?? this.channelId,
      channelGroupId: channelGroupId ?? this.channelGroupId,
      deletedAt: deletedAt ?? this.deletedAt,
      internalWebhook: internalWebhook ?? this.internalWebhook,
      mode: mode ?? this.mode,
      redirectUrl: redirectUrl ?? this.redirectUrl,
      isInvitable: isInvitable ?? this.isInvitable,
      isAllowForward: isAllowForward ?? this.isAllowForward,
      tips: tips ?? this.tips,
    );
  }
}