message deletion, getters for displayname and profile picture
This commit is contained in:
3
doc/TODO
3
doc/TODO
@@ -14,10 +14,7 @@ matrix:
|
||||
send custom html messages
|
||||
kick users
|
||||
ban/unban users
|
||||
profile_picture getter
|
||||
display_name getter
|
||||
list room members
|
||||
delete messages
|
||||
change password
|
||||
ability to select specification revision
|
||||
|
||||
|
||||
@@ -235,6 +235,8 @@ namespace matrix{
|
||||
|
||||
|
||||
//networked getter
|
||||
raii::rjp_string get_display_name(void)const;
|
||||
raii::rjp_string get_profile_picture(void)const;
|
||||
raii::rjp_string room_alias_to_id(const raii::string_base& alias)const;
|
||||
std::vector<raii::rjp_string> list_rooms(void)const;
|
||||
|
||||
@@ -262,9 +264,12 @@ namespace matrix{
|
||||
raii::rjp_string send_message(const raii::string_base& room, const raii::string_base& text)const;
|
||||
raii::rjp_string send_audio(const raii::string_base& room, const audio_info& audio)const;
|
||||
raii::rjp_string send_file(const raii::string_base& room, const file_info& file)const;
|
||||
|
||||
void send_typing(const raii::string_base& room, bool active, int timeout = 5000)const;
|
||||
|
||||
raii::rjp_string redact_event(const raii::string_base& roomid, const raii::string_base& eventid, const raii::string_base& reason)const;
|
||||
raii::rjp_string redact_event(const raii::string_base& roomid, const raii::string_base& eventid)const;
|
||||
|
||||
|
||||
template<class Func>
|
||||
void set_message_callback(Func&& f){
|
||||
m_message_callback = std::forward<Func>(f);
|
||||
|
||||
@@ -90,6 +90,12 @@ namespace matrix{
|
||||
raii::string reply = _put_curl(raii::string("{\"avatar_url\":\"" + media_url + "\"}"), m_urls.profile_picture(), raii::curl_llist());
|
||||
}
|
||||
|
||||
raii::rjp_string bot::get_display_name(void)const{
|
||||
return _get_and_find(m_urls.displayname(), "displayname"_ss);
|
||||
}
|
||||
raii::rjp_string bot::get_profile_picture(void)const{
|
||||
return _get_and_find(m_urls.profile_picture(), "avatar_url"_ss);
|
||||
}
|
||||
raii::rjp_string bot::room_alias_to_id(const raii::string_base& alias)const{
|
||||
auto tmp = m_curl.encode(alias, alias.length());
|
||||
return _get_and_find(raii::string(m_urls.alias_lookup() + tmp), "room_id"_ss);
|
||||
@@ -412,6 +418,20 @@ namespace matrix{
|
||||
_put_curl("{\"typing\":false}"_ss, m_urls.typing(m_homeserver, m_access_token, m_curl.encode(room), m_curl.encode(m_userid)), raii::curl_llist());
|
||||
}
|
||||
|
||||
raii::rjp_string bot::redact_event(const raii::string_base& roomid, const raii::string_base& eventid, const raii::string_base& reason)const{
|
||||
auto ret = _put_curl(raii::string("{\"reason\":\"" + reason + "\"}"), m_urls.redact(m_homeserver, m_access_token, m_curl.encode(roomid), m_curl.encode(eventid)), raii::curl_llist());
|
||||
if(!ret) return {};
|
||||
raii::rjp_ptr root(rjp_parse(ret.get()));
|
||||
if(!root) return {};
|
||||
|
||||
RJP_search_res res = rjp_search_member(root.get(), "event_id", 0);
|
||||
if(!res.value) return {};
|
||||
return raii::rjp_string(res.value);
|
||||
}
|
||||
raii::rjp_string bot::redact_event(const raii::string_base& roomid, const raii::string_base& eventid)const{
|
||||
return redact_event(roomid, eventid, ""_ss);
|
||||
}
|
||||
|
||||
void bot::logout(void){
|
||||
_get_curl(m_urls.logout(m_homeserver, m_access_token));
|
||||
m_urls.invalidate_accesstoken();
|
||||
@@ -756,7 +776,7 @@ namespace matrix{
|
||||
return raii::string(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/send/m.room.message?access_token=" + access_token);
|
||||
}
|
||||
raii::string bot::mat_url_list::redact(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid, const raii::string_base& eventid)const{
|
||||
return raii::string(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/redact/" + eventid + "?access_token=" + access_token);
|
||||
return raii::string(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/redact/" + eventid + "/0?access_token=" + access_token);
|
||||
}
|
||||
raii::string bot::mat_url_list::power_level(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const{
|
||||
return raii::string(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/state/m.room.power_levels?access_token=" + access_token);
|
||||
|
||||
@@ -452,6 +452,8 @@ int main(){
|
||||
matbot.set_message_callback(sync_callback);
|
||||
matbot.set_invite_callback(invite_callback);
|
||||
|
||||
matbot.redact_event("!QeYfNDCRodtNohhnaI:matrix.org"_ss, "$1553965753281066lkKaO:matrix.org"_ss, "too gay"_ss);
|
||||
|
||||
while(!should_quit){
|
||||
sync_reply = matbot.sync(30000);
|
||||
DEBUG_PRINT("syncing\n");
|
||||
|
||||
Reference in New Issue
Block a user