Sometimes we need to update an object, such as message or channel. At first, it might seem confusing, but it's actually really simple! You just need to use an object with identical properties you don't need to update. NOTE: your bot can't edit messages sent by others.
#include <dpp/dpp.h>
int main() {
event.reply("That's a message");
const auto content = std::get<std::string>(event.get_parameter("content"));
const dpp::snowflake msg_id = std::get<std::string>(event.get_parameter("msg-id"));
bot.message_get(msg_id, event.command.channel_id, [&bot, content, event](const dpp::confirmation_callback_t& callback) {
if (callback.is_error()) {
event.reply("error");
return;
}
auto message = callback.get<dpp::message>();
message.set_content(content);
bot.message_edit(message);
event.reply("Message content is now `" + content + "`.");
});
const auto name = std::get<std::string>(event.
get_parameter(
"name"));
const auto channel_id = std::get<dpp::snowflake>(event.
get_parameter(
"channel"));
event.reply("error");
return;
}
bot.channel_edit(channel);
event.
reply(
"Channel name is now `" + name +
"`.");
});
}
});
if (dpp::run_once <struct register_global_commands>()) {
dpp::slashcommand channel_edit(
"channel-edit",
"Edit the name of channel specified", bot.me.id);
bot.global_bulk_command_create({ msg_edit, channel_edit, msg_send });
}
});
return 0;
}
A definition of a discord channel. There are one of these for every channel type except threads....
Definition: channel.h:414
channel & set_name(const std::string &name)
Set name of this channel object.
The cluster class represents a group of shards and a command queue for sending and receiving commands...
Definition: cluster.h:80
std::string get_command_name() const
Get the command name for a command interaction.
Represents an application command, created by your bot either globally, or on a guild.
Definition: appcommand.h:1339
std::function< void(const dpp::log_t &)> DPP_EXPORT cout_logger()
Get a default logger that outputs to std::cout. e.g.
@ i_message_content
Intent for receipt of message content.
Definition: intents.h:112
@ i_default_intents
Default D++ intents (all non-privileged intents).
Definition: intents.h:132
@ co_channel
A channel snowflake id. Includes all channel types and categories.
Definition: appcommand.h:84
@ co_string
A string value.
Definition: appcommand.h:64
@ st_wait
Wait forever on a condition variable. The cluster will spawn threads for each shard and start() will ...
Definition: cluster.h:63
Each command option is a command line parameter. It can have a type (see dpp::command_option_type),...
Definition: appcommand.h:203
The results of a REST call wrapped in a convenient struct.
Definition: restresults.h:255
bool is_error() const
Returns true if the call resulted in an error rather than a legitimate value in the confirmation_call...
T get() const
Get the stored value via std::get.
Definition: restresults.h:323
void reply(command_completion_event_t callback=utility::log_error()) const
Acknowledge interaction without displaying a message to the user, for use with button and select menu...
interaction command
command interaction
Definition: dispatcher.h:677
virtual command_value get_parameter(const std::string &name) const
Get a slashcommand parameter.
Session ready.
Definition: dispatcher.h:960
User has issued a slash command.
Definition: dispatcher.h:694