Bladeren bron

* Fix groups not being 'main' if leaf had no local setting

Bryan Drewery 14 jaren geleden
bovenliggende
commit
e98e4f7b58
4 gewijzigde bestanden met toevoegingen van 12 en 5 verwijderingen
  1. 1 1
      src/chanprog.c
  2. 1 1
      src/cmds.c
  3. 9 2
      src/set.c
  4. 1 1
      src/set.h

+ 1 - 1
src/chanprog.c

@@ -800,7 +800,7 @@ bool bot_shouldjoin(struct userrec* u, struct flag_record* fr, struct chanset_t*
 #endif
 
   // Is this bot in the groups that this channel has?
-  const char *botgroups = u == conf.bot->u ? groups : var_get_bot_data(u, "groups");
+  const char *botgroups = u == conf.bot->u ? groups : var_get_bot_data(u, "groups", true);
   bd::Array<bd::String> my_groupsArray(bd::String(botgroups).split(','));
   bool group_match = 0;
 

+ 1 - 1
src/cmds.c

@@ -1390,7 +1390,7 @@ static void cmd_botcmd(int idx, char *par)
     cnt++;
     bool group_match = false;
     if (botm[0] == '%') {
-      bd::String botgroups = var_get_bot_data(botu, "groups");
+      bd::String botgroups = var_get_bot_data(botu, "groups", true);
       if (botgroups.split(',').find(botm + 1) != bd::String::npos) {
         group_match = true;
       }

+ 9 - 2
src/set.c

@@ -701,7 +701,7 @@ void var_userfile_share_line(char *line, int idx, bool share)
   set_noshare = 0;
 }
 
-const char *var_get_bot_data(struct userrec *u, const char *name)
+const char *var_get_bot_data(struct userrec *u, const char *name, bool useDefault)
 {
   if (!u)
     return NULL;
@@ -712,7 +712,14 @@ const char *var_get_bot_data(struct userrec *u, const char *name)
   while (xk && strcmp(xk->key, name))
     xk = xk->next;
 
-  return xk ? xk->data : NULL;
+  if (xk) {
+    return xk->data;
+  }
+  if (useDefault) {
+    variable_t *var = var_get_var_by_name(name);
+    return var->def;
+  }
+  return NULL;
 }
 
 

+ 1 - 1
src/set.h

@@ -86,7 +86,7 @@ void var_parse_my_botset();
 void init_vars();
 void var_set_by_name(const char *, const char *, const char *);
 void var_set_userentry(const char *, const char *, const char *);
-const char *var_get_bot_data(struct userrec *u, const char *name);
+const char *var_get_bot_data(struct userrec *u, const char *name, bool useDefault = false);
 int cmd_set_real(const char *, int idx, char *);
 const char *var_get_str_by_name(const char *);