Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: ChannelSuspiciousUserMessage, ChannelSuspiciousUserUpdate #29

Merged
merged 3 commits into from
Jun 12, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace TwitchLib.EventSub.Core.Models.ChannelSuspiciousUser
Copy link

@AoshiW AoshiW May 12, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TwitchLib.EventSub.Core uses file scope namespace

{
/// <summary>
/// Channel suspicious user base class.
/// </summary>
public abstract class ChannelSuspiciousUserBase
{
/// <summary>
/// The ID of the channel where the treatment for a suspicious user was updated.
/// </summary>
public string BroadcasterUserId { get; set; } = string.Empty;
/// <summary>
/// The display name of the channel where the treatment for a suspicious user was updated.
/// </summary>
public string BroadcasterUserName { get; set; } = string.Empty;
/// <summary>
/// The login of the channel where the treatment for a suspicious user was updated.
/// </summary>
public string BroadcasterUserLogin { get; set; } = string.Empty;
/// <summary>
/// The user ID of the user that sent the message.
/// </summary>
public string UserId { get; set; } = string.Empty;
/// <summary>
/// The user name of the user that sent the message.
/// </summary>
public string UserName { get; set; } = string.Empty;
/// <summary>
/// The user login of the user that sent the message.
/// </summary>
public string UserLogin { get; set; } = string.Empty;
/// <summary>
/// The status set for the suspicious user. Can be the following: “none”, “active_monitoring”, or “restricted”

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

note: no_treatment is sent rather than none, despite what docs claim

/// </summary>
public string LowTrustStatus { get; set; } = string.Empty;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using TwitchLib.EventSub.Core.Models.ChannelSuspiciousUser;

namespace TwitchLib.EventSub.Core.SubscriptionTypes.Channel
Copy link

@AoshiW AoshiW May 12, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TwitchLib.EventSub.Core uses file scope namespace

{
public sealed class ChannelSuspiciousUserMessage : ChannelSuspiciousUserBase
{
/// <summary>
/// A list of channel IDs where the suspicious user is also banned.
/// </summary>
public string[] SharedBanChannelIds { get; set; } = [];
/// <summary>
/// User types (if any) that apply to the suspicious user, can be “manual”, “ban_evader_detector”, or “shared_channel_ban”.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

note: manually_added is sent rather than manual, despite what docs claim

/// </summary>
public string[] Types { get; set; } = [];
/// <summary>
/// A ban evasion likelihood value (if any) that as been applied to the user automatically by Twitch, can be “unknown”, “possible”, or “likely”.
/// </summary>
public string BanEvasionEvaluation { get; set; } = string.Empty;
/// <summary>
/// The structured chat message.
/// </summary>
public SuspiciousUserMessage Message { get; set; } = new SuspiciousUserMessage();

public sealed class SuspiciousUserMessage
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why isn't the class in its own file?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seemed like it wasn't a pattern in the directory, but i didn't check super thoroughly. Will break these out.

{
/// <summary>
/// The UUID that identifies the message.
/// </summary>
public string MessageId { get; set; } = string.Empty;
/// <summary>
/// The chat message in plain text.
/// </summary>
public string Text { get; set; } = string.Empty;
/// <summary>
/// Ordered list of chat message fragments.
/// </summary>
public MessageFragment[] Fragments { get; set; } = [];

public sealed class MessageFragment
{
/// <summary>
/// The type of message fragment. Possible values: -text -cheermote -emote
/// </summary>
public string Type { get; set; } = string.Empty;
/// <summary>
/// Message text in fragment.
/// </summary>
public string Text { get; set; } = string.Empty;
/// <summary>
/// Optional. Metadata pertaining to the cheermote.
/// </summary>
public FragmentCheermote Cheermote = new FragmentCheermote();
/// <summary>
/// Optional. Metadata pertaining to the emote.
/// </summary>
public FragmentEmote Emote { get; set; } = new FragmentEmote();

public sealed class FragmentCheermote
{
/// <summary>
/// The name portion of the Cheermote string that you use in chat to cheer Bits. The full Cheermote string is the concatenation of {prefix} + {number of Bits}.
///
/// For example, if the prefix is “Cheer” and you want to cheer 100 Bits, the full Cheermote string is Cheer100.When the Cheermote string is entered in chat, Twitch converts it to the image associated with the Bits tier that was cheered.
/// </summary>
public string Prefix { get; set; } = string.Empty;
/// <summary>
/// The amount of bits cheered.
/// </summary>
public int Bits { get; set; } = 0;
/// <summary>
/// The tier level of the cheermote.
/// </summary>
public int Tier { get; set; } = 0;
}

public sealed class FragmentEmote
{
/// <summary>
/// An ID that uniquely identifies this emote.
/// </summary>
public string Id { get; set; } = string.Empty;
/// <summary>
/// An ID that identifies the emote set that the emote belongs to.
/// </summary>
public string EmoteSetId { get; set; } = string.Empty;
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Text;
using TwitchLib.EventSub.Core.Models.ChannelSuspiciousUser;

namespace TwitchLib.EventSub.Core.SubscriptionTypes.Channel

This comment was marked as resolved.

{
public sealed class ChannelSuspiciousUserUpdate : ChannelSuspiciousUserBase
{
/// <summary>
/// The ID of the moderator that updated the treatment for a suspicious user.
/// </summary>
public string ModeratorUserId { get; set; } = string.Empty;
/// <summary>
/// The display name of the moderator that updated the treatment for a suspicious user.
/// </summary>
public string ModeratorUserName { get; set; } = string.Empty;
/// <summary>
/// The login of the moderator that updated the treatment for a suspicious user.
/// </summary>
public string ModeratorUserLogin { get; set; } = string.Empty;
}
}
Loading