mirror of
https://github.com/uowuo/abaddon.git
synced 2024-11-10 06:00:10 +00:00
send chat messages
This commit is contained in:
parent
6f11aa4dae
commit
6b72931ba7
@ -117,6 +117,7 @@
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;USE_LOCAL_PROXY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@ -132,6 +133,7 @@
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
|
@ -152,6 +152,10 @@ void Abaddon::ActionListChannelItemClick(Snowflake id) {
|
||||
}
|
||||
}
|
||||
|
||||
void Abaddon::ActionChatInputSubmit(std::string msg, Snowflake channel) {
|
||||
m_discord.SendChatMessage(msg, channel);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
Gtk::Main::init_gtkmm_internals(); // why???
|
||||
Abaddon abaddon;
|
||||
|
@ -24,6 +24,7 @@ public:
|
||||
void ActionMoveGuildUp(Snowflake id);
|
||||
void ActionMoveGuildDown(Snowflake id);
|
||||
void ActionListChannelItemClick(Snowflake id);
|
||||
void ActionChatInputSubmit(std::string msg, Snowflake channel);
|
||||
|
||||
std::string GetDiscordToken() const;
|
||||
bool IsDiscordActive() const;
|
||||
|
@ -136,9 +136,10 @@ bool ChatWindow::on_key_press_event(GdkEventKey *e) {
|
||||
return false;
|
||||
|
||||
auto text = buffer->get_text();
|
||||
|
||||
buffer->set_text("");
|
||||
|
||||
m_abaddon->ActionChatInputSubmit(text, m_active_channel);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -117,6 +117,14 @@ const MessageData *DiscordClient::GetMessage(Snowflake id) const {
|
||||
return &m_messages.at(id);
|
||||
}
|
||||
|
||||
void DiscordClient::SendChatMessage(std::string content, Snowflake channel) {
|
||||
// @([^@#]{1,32})#(\\d{4})
|
||||
CreateMessageObject obj;
|
||||
obj.Content = content;
|
||||
nlohmann::json j = obj;
|
||||
m_http.MakePOST("/channels/" + std::to_string(channel) + "/messages", j.dump(), [](auto) {});
|
||||
}
|
||||
|
||||
void DiscordClient::UpdateToken(std::string token) {
|
||||
m_token = token;
|
||||
m_http.SetAuth(token);
|
||||
@ -173,7 +181,7 @@ void DiscordClient::HandleGatewayReady(const GatewayMessage &msg) {
|
||||
m_user_settings = data.UserSettings;
|
||||
}
|
||||
|
||||
void DiscordClient::HandleGatewayMessageCreate(const GatewayMessage& msg) {
|
||||
void DiscordClient::HandleGatewayMessageCreate(const GatewayMessage &msg) {
|
||||
MessageData data = msg.Data;
|
||||
StoreMessage(data.ID, data);
|
||||
m_abaddon->DiscordNotifyMessageCreate(data.ID);
|
||||
@ -442,6 +450,10 @@ void to_json(nlohmann::json &j, const HeartbeatMessage &m) {
|
||||
j["d"] = m.Sequence;
|
||||
}
|
||||
|
||||
void to_json(nlohmann::json &j, const CreateMessageObject &m) {
|
||||
j["content"] = m.Content;
|
||||
}
|
||||
|
||||
Snowflake::Snowflake()
|
||||
: m_num(Invalid) {}
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
// bruh
|
||||
#ifdef GetMessage
|
||||
#undef GetMessage
|
||||
#undef GetMessage
|
||||
#endif
|
||||
|
||||
struct Snowflake {
|
||||
@ -341,6 +341,12 @@ struct HeartbeatMessage : GatewayMessage {
|
||||
friend void to_json(nlohmann::json &j, const HeartbeatMessage &m);
|
||||
};
|
||||
|
||||
struct CreateMessageObject {
|
||||
std::string Content;
|
||||
|
||||
friend void to_json(nlohmann::json &j, const CreateMessageObject &m);
|
||||
};
|
||||
|
||||
// https://stackoverflow.com/questions/29775153/stopping-long-sleep-threads/29775639#29775639
|
||||
class HeartbeatWaiter {
|
||||
public:
|
||||
@ -389,6 +395,8 @@ public:
|
||||
void FetchMessagesInChannel(Snowflake id, std::function<void(const std::vector<MessageData> &)> cb);
|
||||
const MessageData *GetMessage(Snowflake id) const;
|
||||
|
||||
void SendChatMessage(std::string content, Snowflake channel);
|
||||
|
||||
void UpdateToken(std::string token);
|
||||
|
||||
private:
|
||||
|
@ -37,20 +37,20 @@ void HTTPClient::MakePOST(std::string path, std::string payload, std::function<v
|
||||
};
|
||||
auto body = cpr::Body { payload };
|
||||
#ifdef USE_LOCAL_PROXY
|
||||
m_futures.push_back(cpr::GetCallback(
|
||||
m_futures.push_back(cpr::PostCallback(
|
||||
std::bind(&HTTPClient::OnResponse, this, std::placeholders::_1, cb),
|
||||
url, headers, body,
|
||||
cpr::Proxies { { "http", "127.0.0.1:8888" }, { "https", "127.0.0.1:8888" } },
|
||||
cpr::VerifySsl { false }));
|
||||
#else
|
||||
m_futures.push_back(cpr::PatchCallback(
|
||||
m_futures.push_back(cpr::PostCallback(
|
||||
std::bind(&HTTPClient::OnResponse, this, std::placeholders::_1, cb),
|
||||
url, headers, body));
|
||||
#endif
|
||||
}
|
||||
|
||||
void HTTPClient::MakeGET(std::string path, std::function<void(cpr::Response r)> cb) {
|
||||
printf("POST %s\n", path.c_str());
|
||||
printf("GET %s\n", path.c_str());
|
||||
auto url = cpr::Url { m_api_base + path };
|
||||
auto headers = cpr::Header {
|
||||
{ "Authorization", m_authorization },
|
||||
|
@ -5,8 +5,8 @@ MainWindow::MainWindow()
|
||||
: m_main_box(Gtk::ORIENTATION_VERTICAL)
|
||||
, m_content_box(Gtk::ORIENTATION_HORIZONTAL)
|
||||
, m_chan_chat_paned(Gtk::ORIENTATION_HORIZONTAL) {
|
||||
set_default_size(800, 600);
|
||||
|
||||
set_default_size(1200, 800);
|
||||
|
||||
m_menu_discord.set_label("Discord");
|
||||
m_menu_discord.set_submenu(m_menu_discord_sub);
|
||||
m_menu_discord_connect.set_label("Connect");
|
||||
|
Loading…
Reference in New Issue
Block a user