Codebase list atheme-services / 1f07cd5
botserv/set_saycaller: (optionally) give caller-nick functionality is not active until enabled individually per channel. (Fixes #487) Austin Ellis 7 years ago
5 changed file(s) with 141 addition(s) and 2 deletion(s). Raw diff Collapse all Expand all
0 Help for SET SAYCALLER:
1
2 This option when turned on will prefix any &nick& SAY
3 or ACTION command messages with the caller's nickname.
4
5 Syntax: SET <channel> SAYCALLER {ON|OFF}
6
7 Examples:
8 /msg &nick& SET #ChatZone SAYCALLER ON
9 /msg &nick& SET #ChatZone SAYCALLER OFF
0 # Copyright (c) 2016 Austin Ellis
01 # Copyright (c) 2003-2004 E. Will et al.
12 # Rights to this code are documented in doc/LICENSE.
23 #
1718 set_fantasy.c \
1819 set_nobot.c \
1920 set_private.c \
21 set_saycaller.c \
2022
2123 include ../../extra.mk
2224 include ../../buildsys.mk
00 /*
1 * Copyright (c) 2016 Austin Ellis
12 * Copyright (c) 2009 Celestin, et al.
23 * Rights to this code are as documented in doc/LICENSE.
34 *
1213 (
1314 "botserv/bottalk", false, _modinit, _moddeinit,
1415 PACKAGE_STRING,
15 "Rizon Development Group <http://dev.rizon.net>"
16 VENDOR_STRING
1617 );
1718
1819 static void bs_cmd_say(sourceinfo_t *si, int parc, char *parv[]);
3738 {
3839 char *channel = parv[0];
3940 char *message = parv[1];
41 char saybuf[BUFSIZE];
4042 metadata_t *bs;
4143 user_t *bot;
4244
6769 command_fail(si, fault_noprivs, _("You are not authorized to perform this operation."));
6870 return;
6971 }
72
73 if (metadata_find(mc, "private:frozen:freezer"))
74 {
75 command_fail(si, fault_noprivs, _("\2%s\2 is frozen."), mc->name);
76 return;
77 }
7078
7179 if ((bs = metadata_find(mc, "private:botserv:bot-assigned")) != NULL)
7280 bot = user_find_named(bs->value);
7886 return;
7987 }
8088
89 if (metadata_find(mc, "private:botserv:saycaller"))
90 {
91 snprintf(saybuf, BUFSIZE, "%s", get_source_name(si));
92 msg(bot->nick, channel, "(%s) %s", saybuf, message);
93 logcommand(si, CMDLOG_DO, "SAY:\2%s\2: \2%s\2", channel, message);
94 }
95 else
96 {
97
8198 msg(bot->nick, channel, "%s", message);
8299 logcommand(si, CMDLOG_DO, "SAY:\2%s\2: \2%s\2", channel, message);
100 }
83101 }
84102
85103 static void bs_cmd_act(sourceinfo_t *si, int parc, char *parv[])
86104 {
87105 char *channel = parv[0];
88106 char *message = parv[1];
107 char actbuf[BUFSIZE];
89108 metadata_t *bs;
90109 user_t *bot;
91110
116135 command_fail(si, fault_noprivs, _("You are not authorized to perform this operation."));
117136 return;
118137 }
138
139 if (metadata_find(mc, "private:frozen:freezer"))
140 {
141 command_fail(si, fault_noprivs, _("\2%s\2 is frozen."), mc->name);
142 return;
143 }
119144
120145 if ((bs = metadata_find(mc, "private:botserv:bot-assigned")) != NULL)
121146 bot = user_find_named(bs->value);
126151 command_fail(si, fault_nosuch_key, _("\2%s\2 does not have a bot assigned."), mc->name);
127152 return;
128153 }
154 if (metadata_find(mc, "private:botserv:saycaller"))
155 {
156 snprintf(actbuf, BUFSIZE, "%s", get_source_name(si));
157 msg(bot->nick, channel, "\001ACTION (%s) %s\001", actbuf, message);
158 logcommand(si, CMDLOG_DO, "ACT:\2%s\2: \2%s\2", channel, message);
159 }
160 else
161 {
129162
130163 msg(bot->nick, channel, "\001ACTION %s\001", message);
131164 logcommand(si, CMDLOG_DO, "ACT:\2%s\2: \2%s\2", channel, message);
165 }
132166 }
133167
134168 /* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs
1313 (
1414 "botserv/set", false, _modinit, _moddeinit,
1515 PACKAGE_STRING,
16 "Rizon Development Group <http://dev.rizon.net>"
1716 );
1817
1918 void _modinit(module_t *m)
2322 MODULE_TRY_REQUEST_DEPENDENCY(m, "botserv/set_fantasy");
2423 MODULE_TRY_REQUEST_DEPENDENCY(m, "botserv/set_nobot");
2524 MODULE_TRY_REQUEST_DEPENDENCY(m, "botserv/set_private");
25 MODULE_TRY_REQUEST_DEPENDENCY(m, "botserv/set_saycaller");
2626
2727 }
2828
0 /*
1 * Copyright (c) 2016 Austin Ellis
2 * Rights to this code are as documented in doc/LICENSE.
3 *
4 * Enable say/act caller ID.
5 *
6 */
7
8 #include "atheme.h"
9 #include "uplink.h"
10
11 DECLARE_MODULE_V1
12 (
13 "botserv/set_saycaller", false, _modinit, _moddeinit,
14 PACKAGE_STRING,
15 VENDOR_STRING
16 );
17
18 mowgli_patricia_t **bs_set_cmdtree;
19
20 static void bs_cmd_set_saycaller(sourceinfo_t *si, int parc, char *parv[]);
21
22 command_t bs_set_saycaller = { "SAYCALLER", N_("Enable Caller-ID on BotServ actions or messages."), AC_AUTHENTICATED, 2, bs_cmd_set_saycaller, { .path = "botserv/set_saycaller" } };
23
24 void _modinit(module_t *m)
25 {
26 MODULE_TRY_REQUEST_SYMBOL(m, bs_set_cmdtree, "botserv/set_core", "bs_set_cmdtree");
27
28 command_add(&bs_set_saycaller, *bs_set_cmdtree);
29
30 }
31
32 void _moddeinit(module_unload_intent_t intent)
33 {
34 command_delete(&bs_set_saycaller, *bs_set_cmdtree);
35
36 }
37
38 static void bs_cmd_set_saycaller(sourceinfo_t *si, int parc, char *parv[])
39 {
40 char *channel = parv[0];
41 char *option = parv[1];
42 mychan_t *mc;
43 metadata_t *md;
44
45 if (parc < 2 || !channel || !option)
46 {
47 command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "SET SAYCALLER");
48 command_fail(si, fault_needmoreparams, _("Syntax: SET <#channel> SAYCALLER {ON|OFF}"));
49 return;
50 }
51
52 mc = mychan_find(channel);
53 if (!mc)
54 {
55 command_fail(si, fault_nosuch_target, _("Channel \2%s\2 is not registered."), channel);
56 return;
57 }
58
59 if (!chanacs_source_has_flag(mc, si, CA_SET))
60 {
61 command_fail(si, fault_noprivs, _("You are not authorized to perform this operation."));
62 return;
63 }
64
65 if (metadata_find(mc, "private:frozen:freezer"))
66 {
67 command_fail(si, fault_noprivs, _("\2%s\2 is frozen."), mc->name);
68 return;
69 }
70
71 if (!irccasecmp(option, "ON"))
72 {
73 if ((md = metadata_find(mc, "private:botserv:bot-assigned")) != NULL)
74 metadata_add(mc, "private:botserv:saycaller", md->value);
75
76 logcommand(si, CMDLOG_SET, "SET:SAYCALLER:ON: \2%s\2", mc->name);
77
78 command_success_nodata(si, _("Say Caller is now \2ON\2 on channel %s."), mc->name);
79 }
80 else if(!irccasecmp(option, "OFF"))
81 {
82 metadata_delete(mc, "private:botserv:saycaller");
83 logcommand(si, CMDLOG_SET, "SET:SAYCALLER:OFF: \2%s\2", mc->name);
84 command_success_nodata(si, _("Say Caller is now \2OFF\2 on channel %s."), mc->name);
85 }
86 else
87 {
88 command_fail(si, fault_badparams, STR_INVALID_PARAMS, "SET SAYCALLER");
89 command_fail(si, fault_badparams, _("Syntax: SET <#channel> SAYCALLER {ON|OFF}"));
90 }
91 }
92