add command to invite friend to same group (untested)
This commit is contained in:
parent
f9a43c30cc
commit
113a9ec099
@ -143,5 +143,69 @@ void registerToxCommands(
|
|||||||
},
|
},
|
||||||
"join a tox group by id"
|
"join a tox group by id"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
mcd.registerCommand(
|
||||||
|
"tox", "tox",
|
||||||
|
"invite",
|
||||||
|
[&](std::string_view params, Message3Handle m) -> bool {
|
||||||
|
const auto contact_from = m.get<Message::Components::ContactFrom>().c;
|
||||||
|
|
||||||
|
// trim friend extra stuff
|
||||||
|
if (params.size() < 32*2) {
|
||||||
|
rmm.sendText(
|
||||||
|
contact_from,
|
||||||
|
"error inviting, friend id is not the correct size!"
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
const auto friend_id = hex2bin(std::string{params.substr(0, 32*2)});
|
||||||
|
|
||||||
|
auto [friend_number_opt, err] = t.toxFriendByPublicKey(friend_id);
|
||||||
|
if (!friend_number_opt.has_value()) {
|
||||||
|
rmm.sendText(
|
||||||
|
contact_from,
|
||||||
|
"error inviting, friend not found!"
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get current group
|
||||||
|
if (!cr.all_of<Contact::Components::Parent>(contact_from)) {
|
||||||
|
rmm.sendText(
|
||||||
|
contact_from,
|
||||||
|
"error inviting, not sent from group!"
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
const auto contact_group = cr.get<Contact::Components::Parent>(contact_from).parent;
|
||||||
|
|
||||||
|
if (!cr.all_of<Contact::Components::ToxGroupEphemeral>(contact_from)) {
|
||||||
|
rmm.sendText(
|
||||||
|
contact_from,
|
||||||
|
"error inviting, group not connected (what?!?)!"
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto inv_err = t.toxGroupInviteFriend(
|
||||||
|
cr.get<Contact::Components::ToxGroupEphemeral>(contact_group).group_number,
|
||||||
|
friend_number_opt.value()
|
||||||
|
);
|
||||||
|
if (inv_err == Tox_Err_Group_Invite_Friend::TOX_ERR_GROUP_INVITE_FRIEND_OK) {
|
||||||
|
rmm.sendText(
|
||||||
|
contact_from,
|
||||||
|
"invite sent..."
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
rmm.sendText(
|
||||||
|
contact_from,
|
||||||
|
"error inviting to group, error code " + std::to_string(inv_err)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
"invite a tox friend to the same tox group"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user