$this->tagChannelRead($channel, $msg);
}
+ public function handleRoomstate(IRCMessage $msg) {
+ $channel = $this->getMessageChannel($msg);
+ if ($channel && $msg->hasTag('emote-only')) {
+ $oldEmote = $this->getNote($channel, 'emote_only');
+ $newEmote = !!intval($msg->getTag('emote-only'));
+ if ($oldEmote != $newEmote) {
+ $this->setNote($channel, 'emote_only', $newEmote);
+ }
+ }
+ }
+
+ public function handleWhisper(IRCMessage $msg) {
+ $text = $this->chatlib->generate($msg->getText());
+ $this->sendWhisper($msg->tags['user-id'], $text);
+ }
+
public function getChatlibDatabase(Channel $channel) {
return $this->chatlib;
}
private function getNotes(Channel $channel) {
if (!isset($this->notes[$channel->id])) {
$this->notes[$channel->id] = [
+ 'emote_only' => false,
'last_read' => 0,
'last_special' => [],
'last_write' => time(),
}
private function randomChat(Channel $channel) {
- return $channel->queryChatlog()
- ->whereNotIn('classification', ['gg', 'gl', 'number', 'o7'])
- ->first();
+ $query = $channel->queryChatlog()
+ ->whereNotIn('classification', ['gg', 'gl', 'number', 'o7']);
+ if ($this->getNote($channel, 'emote_only', false)) {
+ $query->where('emote_only', '=', true);
+ }
+ return $query->first();
}
private function randomContextualNumber(Channel $channel) {
}
private function randomMsg(Channel $channel) {
- return $channel->queryChatlog()->first();
+ $query = $channel->queryChatlog();
+ if ($this->getNote($channel, 'emote_only', false)) {
+ $query->where('emote_only', '=', true);
+ }
+ return $query->first();
}
private function performAdlib(Channel $channel) {