Chatterino
IrcMessageHandler.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <IrcMessage>
4 #include "common/Channel.hpp"
5 #include "messages/Message.hpp"
8 
9 #include <vector>
10 
11 namespace chatterino {
12 
13 class TwitchIrcServer;
14 class Channel;
15 
17 {
18  IrcMessageHandler() = default;
19 
20 public:
21  static IrcMessageHandler &instance();
22 
23  // parseMessage parses a single IRC message into 0+ Chatterino messages
24  std::vector<MessagePtr> parseMessage(Channel *channel,
25  Communi::IrcMessage *message);
26 
27  std::vector<MessagePtr> parseMessageWithReply(
28  Channel *channel, Communi::IrcMessage *message,
29  const std::vector<MessagePtr> &otherLoaded);
30 
31  // parsePrivMessage arses a single IRC PRIVMSG into 0-1 Chatterino messages
32  std::vector<MessagePtr> parsePrivMessage(
33  Channel *channel, Communi::IrcPrivateMessage *message);
34  void handlePrivMessage(Communi::IrcPrivateMessage *message,
35  TwitchIrcServer &server);
36 
37  void handleRoomStateMessage(Communi::IrcMessage *message);
38  void handleClearChatMessage(Communi::IrcMessage *message);
39  void handleClearMessageMessage(Communi::IrcMessage *message);
40  void handleUserStateMessage(Communi::IrcMessage *message);
41  void handleGlobalUserStateMessage(Communi::IrcMessage *message);
42  void handleWhisperMessage(Communi::IrcMessage *message);
43 
44  // parseUserNoticeMessage parses a single IRC USERNOTICE message into 0+
45  // Chatterino messages
46  std::vector<MessagePtr> parseUserNoticeMessage(
47  Channel *channel, Communi::IrcMessage *message);
48  void handleUserNoticeMessage(Communi::IrcMessage *message,
49  TwitchIrcServer &server);
50 
51  void handleModeMessage(Communi::IrcMessage *message);
52 
53  // parseNoticeMessage parses a single IRC NOTICE message into 0+ chatterino
54  // messages
55  std::vector<MessagePtr> parseNoticeMessage(
56  Communi::IrcNoticeMessage *message);
57  void handleNoticeMessage(Communi::IrcNoticeMessage *message);
58 
59  void handleJoinMessage(Communi::IrcMessage *message);
60  void handlePartMessage(Communi::IrcMessage *message);
61 
62  static float similarity(MessagePtr msg,
63  const LimitedQueueSnapshot<MessagePtr> &messages);
64  static void setSimilarityFlags(MessagePtr message, ChannelPtr channel);
65 
66 private:
67  void addMessage(Communi::IrcMessage *message, const QString &target,
68  const QString &content, TwitchIrcServer &server,
69  bool isResub, bool isAction);
70 
71  void populateReply(TwitchChannel *channel, Communi::IrcMessage *message,
72  const std::vector<MessagePtr> &otherLoaded,
73  TwitchMessageBuilder &builder);
74 };
75 
76 } // namespace chatterino
std::vector< MessagePtr > parseUserNoticeMessage(Channel *channel, Communi::IrcMessage *message)
Definition: IrcMessageHandler.cpp:821
std::vector< MessagePtr > parseNoticeMessage(Communi::IrcNoticeMessage *message)
Definition: IrcMessageHandler.cpp:953
Definition: TwitchChannel.hpp:60
void handleClearMessageMessage(Communi::IrcMessage *message)
Definition: IrcMessageHandler.cpp:664
void handlePrivMessage(Communi::IrcPrivateMessage *message, TwitchIrcServer &server)
Definition: IrcMessageHandler.cpp:298
void handlePartMessage(Communi::IrcMessage *message)
Definition: IrcMessageHandler.cpp:1142
void handleUserNoticeMessage(Communi::IrcMessage *message, TwitchIrcServer &server)
Definition: IrcMessageHandler.cpp:883
Definition: Application.cpp:48
void handleWhisperMessage(Communi::IrcMessage *message)
Definition: IrcMessageHandler.cpp:775
Definition: TwitchMessageBuilder.hpp:37
void handleUserStateMessage(Communi::IrcMessage *message)
Definition: IrcMessageHandler.cpp:707
static float similarity(MessagePtr msg, const LimitedQueueSnapshot< MessagePtr > &messages)
Definition: IrcMessageHandler.cpp:179
void handleJoinMessage(Communi::IrcMessage *message)
Definition: IrcMessageHandler.cpp:1123
std::vector< MessagePtr > parseMessage(Channel *channel, Communi::IrcMessage *message)
Definition: IrcMessageHandler.cpp:258
static IrcMessageHandler & instance()
Definition: IrcMessageHandler.cpp:252
Definition: Channel.hpp:30
void handleClearChatMessage(Communi::IrcMessage *message)
Definition: IrcMessageHandler.cpp:605
static void setSimilarityFlags(MessagePtr message, ChannelPtr channel)
Definition: IrcMessageHandler.cpp:209
void handleRoomStateMessage(Communi::IrcMessage *message)
Definition: IrcMessageHandler.cpp:549
void handleNoticeMessage(Communi::IrcNoticeMessage *message)
Definition: IrcMessageHandler.cpp:1022
void handleGlobalUserStateMessage(Communi::IrcMessage *message)
Definition: IrcMessageHandler.cpp:758
std::shared_ptr< const Message > MessagePtr
Definition: Channel.hpp:18
Definition: TwitchIrcServer.hpp:24
void handleModeMessage(Communi::IrcMessage *message)
std::shared_ptr< Channel > ChannelPtr
Definition: Channel.hpp:125
Definition: IrcMessageHandler.hpp:16
std::vector< MessagePtr > parsePrivMessage(Channel *channel, Communi::IrcPrivateMessage *message)
Definition: IrcMessageHandler.cpp:283
std::vector< MessagePtr > parseMessageWithReply(Channel *channel, Communi::IrcMessage *message, const std::vector< MessagePtr > &otherLoaded)
Definition: IrcMessageHandler.cpp:312