D++ (DPP)  10.0.30
C++ Discord API Bot Library
dpp::interaction Class Reference

An interaction represents a user running a command and arrives via the dpp::cluster::on_interaction_create event. More...

#include "appcommand.h"

Inheritance diagram for dpp::interaction:
Collaboration diagram for dpp::interaction:

Public Member Functions

 interaction ()
 Construct a new interaction object. More...
 
virtual ~interaction ()=default
 Destroy the interaction object. More...
 
std::string build_json (bool with_id=false) const
 Convert object to json string. More...
 
interactionfill_from_json (nlohmann::json *j)
 Convert object from nlohmann::json. More...
 
autocomplete_interaction get_autocomplete_interaction () const
 Get the autocomplete interaction object. More...
 
const dpp::channelget_channel () const
 Get the channel this command originated on. More...
 
command_interaction get_command_interaction () const
 Get the command interaction object. More...
 
std::string get_command_name () const
 Get the command name for a command interaction. More...
 
component_interaction get_component_interaction () const
 Get the component interaction object. More...
 
const dpp::messageget_context_message () const
 Get the message this action refers to if it is a context menu command. More...
 
constexpr double get_creation_time () const noexcept
 Get the creation time of this object according to Discord. More...
 
const dpp::guildget_guild () const
 Get the guild this command originated on. More...
 
const dpp::userget_issuing_user () const
 Get the user who issued this command. More...
 
const dpp::attachmentget_resolved_attachment (snowflake id) const
 Get an uploaded attachment associated with the slash command from the resolved list. More...
 
const dpp::channelget_resolved_channel (snowflake id) const
 Get a channel associated with the slash command from the resolved list. More...
 
const dpp::guild_memberget_resolved_member (snowflake id) const
 Get a guild member associated with the slash command from the resolved list. More...
 
const dpp::messageget_resolved_message (snowflake id) const
 Get a message associated with the slash command from the resolved list. More...
 
const dpp::permissionget_resolved_permission (snowflake id) const
 Get a permission associated with the slash command from the resolved list. More...
 
const dpp::roleget_resolved_role (snowflake id) const
 Get a role associated with the slash command from the resolved list. More...
 
const dpp::userget_resolved_user (snowflake id) const
 Get a user associated with the slash command from the resolved list. More...
 
constexpr bool operator!= (const managed &other) const noexcept
 Comparison operator for comparing two managed objects by id. More...
 
constexpr bool operator== (const managed &other) const noexcept
 Comparison operator for comparing two managed objects by id. More...
 
auto to_json (bool with_id=false) const
 Convert object to nlohmann::json. More...
 

Public Attributes

permission app_permissions
 Permissions of the bot in the channel/guild where this command was issued. More...
 
snowflake application_id
 ID of the application this interaction is for. More...
 
cache_policy_t cache_policy
 Cache policy from cluster. More...
 
dpp::channel channel
 Optional: The partial channel object where it was sent from. More...
 
snowflake channel_id
 Optional: the channel it was sent from. More...
 
std::variant< command_interaction, component_interaction, autocomplete_interactiondata
 Optional: the command data payload. More...
 
std::vector< entitlemententitlements
 For monetized apps, any entitlements for the invoking user, representing access to premium SKUs. More...
 
snowflake guild_id
 Optional: the guild it was sent from. More...
 
std::string guild_locale
 Guild's locale (language) - for guild interactions only. More...
 
snowflake id = {}
 Unique ID of object set by Discord. More...
 
std::string locale
 User's locale (language). More...
 
guild_member member
 Optional: guild member data for the invoking user, including permissions. More...
 
snowflake message_id
 Originating message id for context menu actions. More...
 
message msg
 Originating message for context menu actions. More...
 
command_resolved resolved
 Resolved data e.g. More...
 
std::string token
 A continuation token for responding to the interaction. More...
 
uint8_t type
 The type of interaction from dpp::interaction_type. More...
 
user usr
 User object for the invoking user. More...
 
uint8_t version
 Read-only property, always 1. More...
 

Protected Member Functions

interactionfill_from_json_impl (nlohmann::json *j)
 Fill object properties from JSON. More...
 
template<typename T , typename C >
const T & get_resolved (snowflake id, const C &resolved_set) const
 Get a resolved object from the resolved set. More...
 
virtual json to_json_impl (bool with_id=false) const
 Build a json for this object. More...
 

Friends

struct json_interface< interaction >
 

Detailed Description

An interaction represents a user running a command and arrives via the dpp::cluster::on_interaction_create event.

This is further split into the events on_form_submit, on_slashcommand, on_user_context_menu, on_button_click, on_select_menu, etc.

Constructor & Destructor Documentation

◆ interaction()

dpp::interaction::interaction ( )

Construct a new interaction object.

References data.

◆ ~interaction()

virtual dpp::interaction::~interaction ( )
virtualdefault

Destroy the interaction object.

Member Function Documentation

◆ build_json()

std::string dpp::json_interface< interaction >::build_json ( bool  with_id = false) const
inlineinherited

Convert object to json string.

Parameters
with_idWhether to include the ID or not
Note
Some fields are conditionally filled, do not rely on all fields being present
Returns
std::string Json built from the structure

◆ fill_from_json()

interaction & dpp::json_interface< interaction >::fill_from_json ( nlohmann::json j)
inlineinherited

Convert object from nlohmann::json.

Parameters
jnlohmann::json object
Returns
T& Reference to self for fluent calling

◆ fill_from_json_impl()

interaction & dpp::interaction::fill_from_json_impl ( nlohmann::json j)
protected

Fill object properties from JSON.

Parameters
jJSON to fill from
Returns
interaction& Reference to self

◆ get_autocomplete_interaction()

autocomplete_interaction dpp::interaction::get_autocomplete_interaction ( ) const

Get the autocomplete interaction object.

Exceptions
dpp::logic_exceptionif the interaction is not for an autocomplete
Returns
autocomplete_interaction object

◆ get_channel()

const dpp::channel & dpp::interaction::get_channel ( ) const

Get the channel this command originated on.

Returns
const dpp::channel& channel
Exceptions
dpp::logic_exceptionCommand originated from a DM or channel not in cache

References dpp::slashcommand::name, and dpp::utility::slashcommand_mention().

Here is the call graph for this function:

◆ get_command_interaction()

command_interaction dpp::interaction::get_command_interaction ( ) const

Get the command interaction object.

Exceptions
dpp::logic_exceptionif the interaction is not for a command
Returns
command_interaction object

◆ get_command_name()

std::string dpp::interaction::get_command_name ( ) const

Get the command name for a command interaction.

Returns
std::string command interaction, or empty string if the interaction is not for a command.

References dpp::slashcommand::description_localizations, and dpp::slashcommand::name_localizations.

◆ get_component_interaction()

component_interaction dpp::interaction::get_component_interaction ( ) const

Get the component interaction object.

Exceptions
dpp::logic_exceptionif the interaction is not for a component
Returns
component_interaction object

◆ get_context_message()

const dpp::message & dpp::interaction::get_context_message ( ) const

Get the message this action refers to if it is a context menu command.

Returns
const dpp::message& context menu message

References dpp::command_interaction::name, and dpp::utility::slashcommand_mention().

Here is the call graph for this function:

◆ get_creation_time()

constexpr double dpp::managed::get_creation_time ( ) const
inlineconstexprnoexceptinherited

Get the creation time of this object according to Discord.

Returns
double creation time inferred from the snowflake ID. The minimum possible value is the first second of 2015.

◆ get_guild()

const dpp::guild & dpp::interaction::get_guild ( ) const

Get the guild this command originated on.

Returns
const dpp::guild& guild
Exceptions
dpp::logic_exceptionCommand originated from a DM or guild not in cache

◆ get_issuing_user()

const dpp::user & dpp::interaction::get_issuing_user ( ) const

Get the user who issued this command.

Returns
const dpp::user& user

◆ get_resolved()

template<typename T , typename C >
const T& dpp::interaction::get_resolved ( snowflake  id,
const C &  resolved_set 
) const
inlineprotected

Get a resolved object from the resolved set.

Template Parameters
Ttype of object to retrieve
Ccontainer defintion for resolved container
Parameters
idSnowflake ID
resolved_setcontainer for the type
Returns
const T& retrieved type
Exceptions
dpp::logic_exceptionon object not found in resolved set

◆ get_resolved_attachment()

const dpp::attachment & dpp::interaction::get_resolved_attachment ( snowflake  id) const

Get an uploaded attachment associated with the slash command from the resolved list.

The resolved list contains associated structures for this command and does not use the cache or require any extra API calls.

Parameters
idAttachment snowflake ID to find
Returns
const dpp::attachment& file attachment
Exceptions
dpp::logic_exceptionon object not found in resolved set

References dpp::find_guild(), and guild_id.

Here is the call graph for this function:

◆ get_resolved_channel()

const dpp::channel & dpp::interaction::get_resolved_channel ( snowflake  id) const

Get a channel associated with the slash command from the resolved list.

The resolved list contains associated structures for this command and does not use the cache or require any extra API calls.

Parameters
idChannel snowflake ID to find
Returns
const dpp::channel& channel
Exceptions
dpp::logic_exceptionon object not found in resolved set

References usr.

◆ get_resolved_member()

const dpp::guild_member & dpp::interaction::get_resolved_member ( snowflake  id) const

Get a guild member associated with the slash command from the resolved list.

The resolved list contains associated structures for this command and does not use the cache or require any extra API calls.

Parameters
idUser snowflake ID to find
Returns
const dpp::guild_member& guild member
Exceptions
dpp::logic_exceptionon object not found in resolved set

References msg.

◆ get_resolved_message()

const dpp::message & dpp::interaction::get_resolved_message ( snowflake  id) const

Get a message associated with the slash command from the resolved list.

The resolved list contains associated structures for this command and does not use the cache or require any extra API calls.

Parameters
idMessage snowflake ID to find
Returns
const dpp::message& message
Exceptions
dpp::logic_exceptionon object not found in resolved set

◆ get_resolved_permission()

const dpp::permission & dpp::interaction::get_resolved_permission ( snowflake  id) const

Get a permission associated with the slash command from the resolved list.

The resolved list contains associated structures for this command and does not use the cache or require any extra API calls.

Parameters
idUser snowflake ID to find
Returns
const dpp::permission& total permissions for the user including overrides on the channel where the command was issued.
Exceptions
dpp::logic_exceptionon object not found in resolved set

References channel_id, and dpp::find_channel().

Here is the call graph for this function:

◆ get_resolved_role()

const dpp::role & dpp::interaction::get_resolved_role ( snowflake  id) const

Get a role associated with the slash command from the resolved list.

The resolved list contains associated structures for this command and does not use the cache or require any extra API calls.

Parameters
idRole snowflake ID to find
Returns
const dpp::role& role
Exceptions
dpp::logic_exceptionon object not found in resolved set

References dpp::command_resolved::attachments, dpp::managed::id, and resolved.

◆ get_resolved_user()

const dpp::user & dpp::interaction::get_resolved_user ( snowflake  id) const

Get a user associated with the slash command from the resolved list.

The resolved list contains associated structures for this command and does not use the cache or require any extra API calls.

Parameters
idUser snowflake ID to find
Returns
const dpp::user& user
Exceptions
dpp::logic_exceptionon object not found in resolved set

References dpp::managed::id, dpp::command_resolved::messages, and resolved.

◆ operator!=()

constexpr bool dpp::managed::operator!= ( const managed other) const
inlineconstexprnoexceptinherited

Comparison operator for comparing two managed objects by id.

Parameters
otherOther object to compare against
Returns
true objects are not the same id
false objects are the same id

◆ operator==()

constexpr bool dpp::managed::operator== ( const managed other) const
inlineconstexprnoexceptinherited

Comparison operator for comparing two managed objects by id.

Parameters
otherOther object to compare against
Returns
true objects are the same id
false objects are not the same id

◆ to_json()

auto dpp::json_interface< interaction >::to_json ( bool  with_id = false) const
inlineinherited

Convert object to nlohmann::json.

Parameters
with_idWhether to include the ID or not
Note
Some fields are conditionally filled, do not rely on all fields being present
Returns
json Json built from the structure

◆ to_json_impl()

json dpp::interaction::to_json_impl ( bool  with_id = false) const
protectedvirtual

Build a json for this object.

Parameters
with_idTrue if to include the ID in the JSON
Returns
json JSON object

References dpp::command_option::description_localizations.

Friends And Related Function Documentation

◆ json_interface< interaction >

friend struct json_interface< interaction >
friend

Member Data Documentation

◆ app_permissions

permission dpp::interaction::app_permissions

Permissions of the bot in the channel/guild where this command was issued.

◆ application_id

snowflake dpp::interaction::application_id

ID of the application this interaction is for.

Referenced by dpp::interaction_create_t::dialog().

◆ cache_policy

cache_policy_t dpp::interaction::cache_policy

Cache policy from cluster.

◆ channel

dpp::channel dpp::interaction::channel

Optional: The partial channel object where it was sent from.

◆ channel_id

snowflake dpp::interaction::channel_id

Optional: the channel it was sent from.

Referenced by get_resolved_permission(), dpp::interaction_create_t::reply(), and dpp::interaction_create_t::thinking().

◆ data

std::variant<command_interaction, component_interaction, autocomplete_interaction> dpp::interaction::data

Optional: the command data payload.

Referenced by interaction().

◆ entitlements

std::vector<entitlement> dpp::interaction::entitlements

For monetized apps, any entitlements for the invoking user, representing access to premium SKUs.

◆ guild_id

snowflake dpp::interaction::guild_id

Optional: the guild it was sent from.

Referenced by get_resolved_attachment().

◆ guild_locale

std::string dpp::interaction::guild_locale

Guild's locale (language) - for guild interactions only.

◆ id

◆ locale

std::string dpp::interaction::locale

User's locale (language).

◆ member

guild_member dpp::interaction::member

Optional: guild member data for the invoking user, including permissions.

Filled when the interaction is invoked in a guild

◆ message_id

snowflake dpp::interaction::message_id

Originating message id for context menu actions.

◆ msg

message dpp::interaction::msg

Originating message for context menu actions.

Referenced by get_resolved_member().

◆ resolved

command_resolved dpp::interaction::resolved

Resolved data e.g.

users, members, roles, channels, permissions, etc.

Referenced by dpp::command_permission::fill_from_json_impl(), get_resolved_role(), and get_resolved_user().

◆ token

std::string dpp::interaction::token

A continuation token for responding to the interaction.

Referenced by dpp::interaction_create_t::dialog().

◆ type

uint8_t dpp::interaction::type

The type of interaction from dpp::interaction_type.

◆ usr

user dpp::interaction::usr

User object for the invoking user.

Referenced by get_resolved_channel().

◆ version

uint8_t dpp::interaction::version

Read-only property, always 1.


The documentation for this class was generated from the following files: