D++ (DPP)
C++ Discord API Bot Library
dpp::message_collector Class Referenceabstract

Message collector. Collects messages during a set timeframe and returns them in a list via the completed() method. More...

#include <collector.h>

+ Inheritance diagram for dpp::message_collector:
+ Collaboration diagram for dpp::message_collector:

Public Member Functions

 message_collector (cluster *cl, uint64_t duration)
 Construct a new message collector object. More...
 
virtual void completed (const std::vector< dpp::message > &list)=0
 Return the completed collection. More...
 
virtual const dpp::messagefilter (const dpp::message_create_t &element)
 Select and filter the items which are to appear in the list This is called every time a new event is fired, to filter the event and determine which of the items is sent to the list. Returning nullptr excludes the item from the list. More...
 
virtual ~message_collector ()=default
 Destroy the message collector object. More...
 
virtual void completed (const std::vector< C > &list)=0
 You must implement this function to receive the completed list of captured objects. More...
 
virtual const C * filter (const T &element)=0
 Filter the list of elements. More...
 
virtual void cancel ()
 Immediately cancels the collector. More...
 

Protected Attributes

class clusterowner
 Owning cluster. More...
 

Detailed Description

Message collector. Collects messages during a set timeframe and returns them in a list via the completed() method.

Constructor & Destructor Documentation

◆ message_collector()

dpp::message_collector::message_collector ( cluster cl,
uint64_t  duration 
)
inline

Construct a new message collector object.

Parameters
clcluster to associate the collector with
durationDuration of time to run the collector for in seconds

◆ ~message_collector()

virtual dpp::message_collector::~message_collector ( )
virtualdefault

Destroy the message collector object.

Member Function Documentation

◆ cancel()

template<class T , class C >
virtual void dpp::collector< T, C >::cancel ( )
inlinevirtualinherited

Immediately cancels the collector.

Use this if you have met the conditions for which you are collecting objects early, e.g. you were watching for a message containing 'yes' or 'no' and have received it before the time is up.

Note
Causes calling of the completed() method if it has not yet been called.

◆ completed() [1/2]

template<class T , class C >
virtual void dpp::collector< T, C >::completed ( const std::vector< C > &  list)
pure virtualinherited

You must implement this function to receive the completed list of captured objects.

Parameters
listThe list of captured objects in captured order

◆ completed() [2/2]

virtual void dpp::message_collector::completed ( const std::vector< dpp::message > &  list)
pure virtual

Return the completed collection.

Parameters
listitems collected during the timeframe specified

◆ filter() [1/2]

virtual const dpp::message * dpp::message_collector::filter ( const dpp::message_create_t element)
inlinevirtual

Select and filter the items which are to appear in the list This is called every time a new event is fired, to filter the event and determine which of the items is sent to the list. Returning nullptr excludes the item from the list.

Parameters
elementelement to filter
Returns
Returned item to add to the list, or nullptr to skip adding this element

◆ filter() [2/2]

template<class T , class C >
virtual const C * dpp::collector< T, C >::filter ( const T &  element)
pure virtualinherited

Filter the list of elements.

Every time an event is fired on the collector, this method wil be called to determine if we should add an object to the list or not. This function can then process the element value, extract the parts which are to be saved to a list (e.g. a dpp::message out of a dpp::message_create_t) and return it as the return value. Returning a value of nullptr causes no object to be stored.

Here is an example of how to filter messages which have specific text in them. This should be used with the specialised type dpp::message_collector

virtual const dpp::message* filter(const dpp::message_create_t& m) {
if (m.msg.content.find("something i want") != std::string::npos) {
return &m.msg;
} else {
return nullptr;
}
}
virtual const dpp::message * filter(const dpp::message_create_t &element)
Select and filter the items which are to appear in the list This is called every time a new event is ...
Definition: collector.h:226
Create message.
Definition: dispatcher.h:1358
message msg
message that was created (sent).
Definition: dispatcher.h:1367
Represents messages sent and received on Discord.
Definition: message.h:1127
std::string content
Definition: message.h:1137
Parameters
elementThe event data to filter
Returns
const C* Returned object or nullptr

Member Data Documentation

◆ owner

template<class T , class C >
class cluster* dpp::collector< T, C >::owner
protectedinherited

Owning cluster.

D++ Library version 10.0.35D++ Library version 10.0.34D++ Library version 10.0.33D++ Library version 10.0.32D++ Library version 10.0.31D++ Library version 10.0.30D++ Library version 10.0.29D++ Library version 10.0.28D++ Library version 10.0.27D++ Library version 10.0.26D++ Library version 10.0.25D++ Library version 10.0.24D++ Library version 10.0.23D++ Library version 10.0.22D++ Library version 10.0.21D++ Library version 10.0.20D++ Library version 10.0.19D++ Library version 10.0.18D++ Library version 10.0.17D++ Library version 10.0.16D++ Library version 10.0.15D++ Library version 10.0.14D++ Library version 10.0.13D++ Library version 10.0.12D++ Library version 10.0.11D++ Library version 10.0.10D++ Library version 10.0.9D++ Library version 10.0.8D++ Library version 10.0.7D++ Library version 10.0.6D++ Library version 10.0.5D++ Library version 10.0.4D++ Library version 10.0.3D++ Library version 10.0.2D++ Library version 10.0.1D++ Library version 10.0.0D++ Library version 9.0.19D++ Library version 9.0.18D++ Library version 9.0.17D++ Library version 9.0.16D++ Library version 9.0.15D++ Library version 9.0.14D++ Library version 9.0.13D++ Library version 9.0.12D++ Library version 9.0.11D++ Library version 9.0.10D++ Library version 9.0.9D++ Library version 9.0.8D++ Library version 9.0.7D++ Library version 9.0.6D++ Library version 9.0.5D++ Library version 9.0.4D++ Library version 9.0.3D++ Library version 9.0.2D++ Library version 9.0.1D++ Library version 9.0.0D++ Library version 1.0.2D++ Library version 1.0.1D++ Library version 1.0.0