When a user issues a command you may want to join their voice channel, e.g. in a music bot. If you are already on the same voice channel, the bot should do nothing (but be ready to instantly play audio) and if the user is on a different voice channel, the bot should switch to it. If the user is on no voice channel at all, this should be considered an error. This example shows how to do this.
#include <dpp/dpp.h>
#include <iomanip>
#include <sstream>
int main() {
bool join_vc = true;
if (current_vc) {
if (users_vc != g->
voice_members.end() && current_vc->channel_id == users_vc->second.channel_id) {
join_vc = false;
} else {
join_vc = true;
}
}
if (join_vc) {
event.reply("You don't seem to be in a voice channel!");
return;
}
event.reply("Joined your channel!");
} else {
event.reply("Don't need to join your channel as i'm already there with you!");
}
}
});
bot.global_command_create(
dpp::slashcommand(
"join",
"Joins your voice channel.", bot.me.id));
}
});
return 0;
}
The cluster class represents a group of shards and a command queue for sending and receiving commands...
Definition cluster.h:89
Represents a guild on Discord (AKA a server).
Definition guild.h:999
std::map< snowflake, voicestate > voice_members
List of members in voice channels in the guild.
Definition guild.h:1059
bool connect_member_voice(const cluster &owner, snowflake user_id, bool self_mute=false, bool self_deaf=false, bool dave=true)
Connect to a voice channel another guild member is in.
snowflake guild_id
Optional: the guild it was sent from.
Definition appcommand.h:1038
const dpp::user & get_issuing_user() const
Get the user who issued this command.
std::string get_command_name() const
Get the command name for a command interaction.
snowflake id
Unique ID of object set by Discord. This value contains a timestamp, worker ID, internal server ID,...
Definition managed.h:39
Represents an application command, created by your bot either globally, or on a guild.
Definition appcommand.h:1436
std::function< void(const dpp::log_t &)> DPP_EXPORT cout_logger()
Get a default logger that outputs to std::cout. e.g.
auto run_once()
Run some code within an if() statement only once.
Definition once.h:41
DPP_EXPORT class guild * find_guild(snowflake id)
@ st_wait
Wait forever on a condition variable. The cluster will spawn threads for each shard and start() will ...
Definition cluster.h:72
dpp::cluster * owner
Cluster owning the event dispatch.
Definition dispatcher.h:102
interaction command
command interaction
Definition dispatcher.h:789
Session ready.
Definition dispatcher.h:1072
User has issued a slash command.
Definition dispatcher.h:806