···638638 const me_ptr = try msg.client.getOrCreateUser(msg.client.config.nick);
639639 try channel.addMember(user_ptr);
640640 try channel.addMember(me_ptr);
641641+ // we set who_requested so we don't try to request
642642+ // who on DMs
643643+ channel.who_requested = true;
641644 var buf: [128]u8 = undefined;
642645 const mark_read = try std.fmt.bufPrint(
643646 &buf,
···13181321}
1319132213201323pub fn whox(self: *App, client: *Client, channel: *irc.Channel) !void {
13241324+ channel.who_requested = true;
13211325 // Only use WHO if we have WHOX and away-notify. Without
13221326 // WHOX, we can get rate limited on eg. libera. Without
13231327 // away-notify, our list will become stale
···15331537 try self.queueWrite(client, mark_read);
15341538 }
15351539 }
15361536- // if there are no members we will request either NAMES or
15371537- // WHOX
15381538- if (channel.members.items.len == 0) try self.whox(client, channel);
15401540+ if (!channel.who_requested) try self.whox(client, channel);
15391541 var topic_seg = [_]vaxis.Segment{
15401542 .{
15411543 .text = channel.topic orelse "",