/**
* Return a list of channels users.
*
- * @return stdClass
+ * @return stdClass|array|bool
* @throws Exception
*/
- public function getAll(): stdClass
+ public function getAll(int $object_detail_level=1): stdClass|array|bool
{
- $response = $this->connection->query('channel.list');
+ $response = $this->connection->query('channel.list', [
+ 'object_detail_level' => $object_detail_level,
+ ]);
if(!is_bool($response)) {
- return $response;
+ return $response->list;
}
throw new Exception('Invalid JSON Response from UnrealIRCd RPC.');
/**
* Get a channel object
*
- * @return stdClass
- * @throws Exception
+ * @return stdClass|array|bool
*/
- public function get(string $channel): stdClass
+ public function get(string $channel, int $object_detail_level=3): stdClass|array|bool
{
- $response = $this->connection->query('channel.get', ['channel' => $channel]);
+ $response = $this->connection->query('channel.get', [
+ 'channel' => $channel,
+ 'object_detail_level' => $object_detail_level,
+ ]);
if (!is_bool($response)) {
- return $response;
+ return $response->channel;
}
+ return false; /* eg user not found */
+ }
- throw new Exception('Invalid JSON Response from UnrealIRCd RPC.');
+ /**
+ * Set and unset modes on a channel.
+ *
+ * @return stdClass|array|bool
+ */
+ public function set_mode(string $channel, string $modes, string $parameters): stdClass|array|bool
+ {
+ return $this->connection->query('channel.set_mode', [
+ 'channel' => $channel,
+ 'modes' => $modes,
+ 'parameters' => $parameters,
+ ]);
+ }
+
+ /**
+ * Set the channel topic.
+ *
+ * @return stdClass|array|bool
+ */
+ public function set_topic(string $channel, string $topic,
+ string $set_by=null, string $set_at=null): stdClass|array|bool
+ {
+ return $this->connection->query('channel.set_topic', [
+ 'channel' => $channel,
+ 'topic' => $topic,
+ 'set_by' => $set_by,
+ 'set_at' => $set_at,
+ ]);
+ }
+
+ /**
+ * Kick a user from the channel.
+ *
+ * @return stdClass|array|bool
+ */
+ public function kick(string $channel, string $nick, string $reason): stdClass|array|bool
+ {
+ return $this->connection->query('channel.kick', [
+ 'nick' => $nick,
+ 'channel' => $channel,
+ 'reason' => $reason,
+ ]);
}
}