TwitchModerationRequests

Inherits: TwitchRequestBase < RefCounted < Object

Twitch Moderation API for bans, timeouts, AutoMod, and moderator management.

Description

TwitchModerationRequests provides comprehensive moderation tools including bans, timeouts, AutoMod management, blocked terms, moderator and VIP management, and Shield Mode. Requires various moderation-related OAuth scopes. Access through TwitchAPI.get_moderation().

Tutorials

Methods

void

add_blocked_term(broadcaster_id: String, moderator_id: String, text: String)

void

add_channel_moderator(broadcaster_id: String, user_id: String)

void

add_channel_vip(broadcaster_id: String, user_id: String)

void

ban_user(broadcaster_id: String, moderator_id: String, data: Dictionary)

void

check_automod_status(broadcaster_id: String, messages: Array)

void

delete_chat_messages(broadcaster_id: String, moderator_id: String, message_id: String = "")

void

get_automod_settings(broadcaster_id: String, moderator_id: String)

void

get_banned_users(broadcaster_id: String, params: Dictionary = {})

void

get_blocked_terms(broadcaster_id: String, moderator_id: String, params: Dictionary = {})

void

get_moderated_channels(user_id: String, params: Dictionary = {})

void

get_moderators(broadcaster_id: String, params: Dictionary = {})

void

get_shield_mode_status(broadcaster_id: String, moderator_id: String)

void

get_vips(broadcaster_id: String, params: Dictionary = {})

void

manage_held_automod_messages(user_id: String, msg_id: String, action: String)

void

remove_blocked_term(broadcaster_id: String, moderator_id: String, id: String)

void

remove_channel_moderator(broadcaster_id: String, user_id: String)

void

remove_channel_vip(broadcaster_id: String, user_id: String)

void

unban_user(broadcaster_id: String, moderator_id: String, user_id: String)

void

update_automod_settings(broadcaster_id: String, moderator_id: String, settings: Dictionary)

void

update_shield_mode_status(broadcaster_id: String, moderator_id: String, is_active: bool)

void

warn_chat_user(broadcaster_id: String, moderator_id: String, user_id: String, reason: String)


Method Descriptions

void add_blocked_term(broadcaster_id: String, moderator_id: String, text: String) 🔗

Adds a word or phrase to the broadcaster's list of blocked terms. Requires moderator:manage:blocked_terms scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "blocked_term_added".

TwitchAPI.get_moderation().add_blocked_term("broadcaster_id", "moderator_id", "badword")
# Response: {"data": [{"id": "term123", "text": "badword", "created_at": "2025-10-16T12:00:00Z", "updated_at": "2025-10-16T12:00:00Z"}]}

void add_channel_moderator(broadcaster_id: String, user_id: String) 🔗

Adds a moderator to the broadcaster's chat. Requires channel:manage:moderators scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "channel_moderator_added".

TwitchAPI.get_moderation().add_channel_moderator("broadcaster_id", "user_id_to_mod")
# Response: 204 No Content on success

void add_channel_vip(broadcaster_id: String, user_id: String) 🔗

Adds a VIP to the broadcaster's chat. Requires channel:manage:vips scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "channel_vip_added".

TwitchAPI.get_moderation().add_channel_vip("broadcaster_id", "user_id_to_vip")
# Response: 204 No Content on success

void ban_user(broadcaster_id: String, moderator_id: String, data: Dictionary) 🔗

Bans or times out a user. data must include user_id and can include duration (in seconds for timeout) and reason. Requires moderator:manage:banned_users scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "user_banned".

var ban_data = {"user_id": "bad_user_id", "duration": 600, "reason": "Spam"}
TwitchAPI.get_moderation().ban_user("broadcaster_id", "moderator_id", ban_data)
# Response: {"data": [{"user_id": "bad_user_id", "created_at": "2025-10-16T12:00:00Z", "end_time": "2025-10-16T12:10:00Z"}]}

void check_automod_status(broadcaster_id: String, messages: Array) 🔗

Checks whether AutoMod would flag an array of messages. messages should be an array of dictionaries with msg_id, msg_text, and user_id. Requires moderation:read scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "automod_status_checked".

var messages = [{"msg_id": "1", "msg_text": "Test message", "user_id": "user123"}]
TwitchAPI.get_moderation().check_automod_status("broadcaster_id", messages)
# Response: {"data": [{"msg_id": "1", "is_permitted": true}]}

void delete_chat_messages(broadcaster_id: String, moderator_id: String, message_id: String = "") 🔗

Deletes a single chat message or all messages from a user. Omit message_id to clear all messages from the user. Requires moderator:manage:chat_messages scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "chat_messages_deleted".

TwitchAPI.get_moderation().delete_chat_messages("broadcaster_id", "moderator_id", "message_id_123")
# Response: 204 No Content on success

void get_automod_settings(broadcaster_id: String, moderator_id: String) 🔗

Gets the broadcaster's AutoMod settings including levels for different categories. Requires moderator:read:automod_settings scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "automod_settings_received".

TwitchAPI.get_moderation().get_automod_settings("broadcaster_id", "moderator_id")
# Response: {"data": [{"broadcaster_id": "123", "overall_level": 2, "disability": 1, "aggression": 2, "sexuality_sex_or_gender": 1, ...}]}

void get_banned_users(broadcaster_id: String, params: Dictionary = {}) 🔗

Gets all users that are banned or timed out. Optional params can include user_id and first. Requires moderation:read scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "banned_users_received".

TwitchAPI.get_moderation().get_banned_users("broadcaster_id", {"first": 20})
# Response: {"data": [{"user_id": "456", "user_login": "baduser", "user_name": "BadUser", "expires_at": "2025-10-16T12:10:00Z", "created_at": "2025-10-16T12:00:00Z", "reason": "Spam"}]}

void get_blocked_terms(broadcaster_id: String, moderator_id: String, params: Dictionary = {}) 🔗

Gets the broadcaster's list of blocked terms. Optional params can include first. Requires moderator:read:blocked_terms scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "blocked_terms_received".

TwitchAPI.get_moderation().get_blocked_terms("broadcaster_id", "moderator_id")
# Response: {"data": [{"id": "term123", "text": "badword", "created_at": "2025-10-16T12:00:00Z", "expires_at": null}]}

void get_moderated_channels(user_id: String, params: Dictionary = {}) 🔗

Gets a list of channels where the user has moderator privileges. Optional params can include first. Requires user:read:moderated_channels scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "moderated_channels_received".

TwitchAPI.get_moderation().get_moderated_channels("user_id")
# Response: {"data": [{"broadcaster_id": "123", "broadcaster_login": "channel1", "broadcaster_name": "Channel1"}]}

void get_moderators(broadcaster_id: String, params: Dictionary = {}) 🔗

Gets all users allowed to moderate the broadcaster's chat. Optional params can include user_id and first. Requires moderation:read scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "moderators_received".

TwitchAPI.get_moderation().get_moderators("broadcaster_id")
# Response: {"data": [{"user_id": "789", "user_login": "mod1", "user_name": "Mod1"}]}

void get_shield_mode_status(broadcaster_id: String, moderator_id: String) 🔗

Gets the broadcaster's Shield Mode activation status. Requires moderator:read:shield_mode scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "shield_mode_status_received".

TwitchAPI.get_moderation().get_shield_mode_status("broadcaster_id", "moderator_id")
# Response: {"data": [{"is_active": false, "moderator_id": "789", "last_activated_at": "2025-10-15T14:30:00Z"}]}

void get_vips(broadcaster_id: String, params: Dictionary = {}) 🔗

Gets the broadcaster's list of VIPs. Optional params can include user_id and first. Requires channel:read:vips scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "vips_received".

TwitchAPI.get_moderation().get_vips("broadcaster_id")
# Response: {"data": [{"user_id": "456", "user_login": "vipuser", "user_name": "VIPUser"}]}

void manage_held_automod_messages(user_id: String, msg_id: String, action: String) 🔗

Allows or denies a message held by AutoMod. action must be "ALLOW" or "DENY". Requires moderator:manage:automod scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "automod_message_managed".

TwitchAPI.get_moderation().manage_held_automod_messages("moderator_id", "msg_id_123", "ALLOW")
# Response: 204 No Content on success

void remove_blocked_term(broadcaster_id: String, moderator_id: String, id: String) 🔗

Removes a blocked term from the broadcaster's list. Requires moderator:manage:blocked_terms scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "blocked_term_removed".

TwitchAPI.get_moderation().remove_blocked_term("broadcaster_id", "moderator_id", "term123")
# Response: 204 No Content on success

void remove_channel_moderator(broadcaster_id: String, user_id: String) 🔗

Removes a moderator from the broadcaster's chat. Requires channel:manage:moderators scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "channel_moderator_removed".

TwitchAPI.get_moderation().remove_channel_moderator("broadcaster_id", "user_id")
# Response: 204 No Content on success

void remove_channel_vip(broadcaster_id: String, user_id: String) 🔗

Removes a VIP from the broadcaster's chat. Requires channel:manage:vips scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "channel_vip_removed".

TwitchAPI.get_moderation().remove_channel_vip("broadcaster_id", "user_id")
# Response: 204 No Content on success

void unban_user(broadcaster_id: String, moderator_id: String, user_id: String) 🔗

Removes a ban or timeout from a user. Requires moderator:manage:banned_users scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "user_unbanned".

TwitchAPI.get_moderation().unban_user("broadcaster_id", "moderator_id", "user_id")
# Response: 204 No Content on success

void update_automod_settings(broadcaster_id: String, moderator_id: String, settings: Dictionary) 🔗

Updates the broadcaster's AutoMod settings. settings can include overall_level or individual category levels. Requires moderator:manage:automod_settings scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "automod_settings_updated".

var settings = {"overall_level": 3}
TwitchAPI.get_moderation().update_automod_settings("broadcaster_id", "moderator_id", settings)
# Response: {"data": [{"broadcaster_id": "123", "overall_level": 3, "disability": 2, "aggression": 2, ...}]}

void update_shield_mode_status(broadcaster_id: String, moderator_id: String, is_active: bool) 🔗

Activates or deactivates Shield Mode. Requires moderator:manage:shield_mode scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "shield_mode_status_updated".

TwitchAPI.get_moderation().update_shield_mode_status("broadcaster_id", "moderator_id", true)
# Response: {"data": [{"is_active": true, "moderator_id": "789", "last_activated_at": "2025-10-16T12:00:00Z"}]}

void warn_chat_user(broadcaster_id: String, moderator_id: String, user_id: String, reason: String) 🔗

Sends a warning to a user in chat. Requires moderator:manage:warnings scope. Results are returned via the TwitchAPI.request_completed signal with signal_name "chat_user_warned".

TwitchAPI.get_moderation().warn_chat_user("broadcaster_id", "moderator_id", "user_id", "Please follow the rules")
# Response: 204 No Content on success