本文整理汇总了C#中Bot.NPSay方法的典型用法代码示例。如果您正苦于以下问题:C# Bot.NPSay方法的具体用法?C# Bot.NPSay怎么用?C# Bot.NPSay使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Bot
的用法示例。
在下文中一共展示了Bot.NPSay方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: cmd_npsay
public static void cmd_npsay(Bot bot, String ns, String[] args, String msg, String from, dAmnPacket packet)
{
if (args.Length < 2)
{
bot.Say(ns, String.Format("<b>» Usage:</b> {0}npsay <i>[#channel]</i> <i>msg</i>", bot.Config.Trigger));
}
else
{
String chan, mesg;
if (!args[1].StartsWith("#"))
{
chan = ns;
mesg = msg.Substring(6);
}
else
{
chan = args[1];
mesg = msg.Substring(7 + args[1].Length);
}
lock (CommandChannels["send"])
{
CommandChannels["send"].Add(ns);
}
bot.NPSay(chan, mesg);
}
}
示例2: evt_join
public static void evt_join(Bot bot, dAmnPacket packet)
{
if (BDS.syncing && packet.Parameter.StartsWith("pchat:") && packet.Parameter.ToLower().Contains(BDS.syncwith))
{
BDS.syncwatch = Stopwatch.StartNew();
bot.NPSay(packet.Parameter, "BDS:SYNC:BEGIN");
return;
}
// Don't display DataShare messages.
if (Program.NoDisplay.Contains(Tools.FormatNamespace(packet.Parameter.ToLower(), Types.NamespaceFormat.Channel))) return;
if (packet.Arguments["e"] == "ok")
{
ConIO.Write(String.Format("** Joined [{0}]", packet.Arguments["e"]), Tools.FormatChat(packet.Parameter));
// Initialize channel data
lock (ChannelData)
{
if (!ChannelData.ContainsKey(packet.Parameter.ToLower()))
{
ChannelData.Add(packet.Parameter.ToLower(), new Types.ChatData());
ChannelData[packet.Parameter.ToLower()].Name = packet.Parameter;
}
}
lock (CommandChannels["join"])
{
if (CommandChannels["join"].Count != 0)
{
String chan = CommandChannels["join"][0];
bot.Say(chan, String.Format("<b>» Joined {0} [ok]</b>", Tools.FormatChat(packet.Parameter)));
CommandChannels["join"].RemoveAt(0);
}
}
}
else
{
ConIO.Write(String.Format("** Failed to join [{0}]", packet.Arguments["e"]), Tools.FormatChat(packet.Parameter));
lock (CommandChannels["join"])
{
if (CommandChannels["join"].Count != 0)
{
String chan = CommandChannels["join"][0];
bot.Say(chan, String.Format("<b>» Failed to join {0} [{1}]</b>", Tools.FormatChat(packet.Parameter), packet.Arguments["e"]));
CommandChannels["join"].RemoveAt(0);
}
}
}
}
示例3: evt_recv_join
public static void evt_recv_join(Bot bot, dAmnPacket packet)
{
if (packet.Parameter.StartsWith("pchat:"))
{
ConIO.Write(String.Format("** {0} joined.", packet.SubParameter));
if (BDS.syncing && packet.Parameter.StartsWith("pchat:") && packet.SubParameter.ToLower() == BDS.syncwith)
{
BDS.syncwatch = Stopwatch.StartNew();
bot.NPSay(packet.Parameter, "BDS:SYNC:BEGIN");
}
return;
}
if (packet.Parameter == "chat:DataShare")
{
BDS.ToggleOnline(packet.SubParameter);
}
// Due to the odd format of this packet, arguments are pushed to the body.
packet.PullBodyArguments();
// Don't display DataShare messages.
if (!Program.NoDisplay.Contains(Tools.FormatNamespace(packet.Parameter.ToLower(), Types.NamespaceFormat.Channel)))
{
ConIO.Write(String.Format("** {0}{1} joined. [{2}]", packet.Arguments["symbol"], packet.SubParameter, packet.Arguments["pc"]), Tools.FormatChat(packet.Parameter));
lock (BDS._seen_database)
{
if (BDS._seen_database.ContainsKey(packet.SubParameter.ToLower()))
{
BDS._seen_database[packet.SubParameter.ToLower()].Channel = packet.Parameter;
BDS._seen_database[packet.SubParameter.ToLower()].Type = (byte)Types.SeenType.Joining;
BDS._seen_database[packet.SubParameter.ToLower()].Timestamp = Bot.EpochTimestamp;
}
else
{
BDS._seen_database.Add(packet.SubParameter.ToLower(), new SeenInfo()
{
Name = packet.SubParameter,
Channel = packet.Parameter,
Type = (byte)Types.SeenType.Joining,
Timestamp = Bot.EpochTimestamp
});
}
}
}
// Police bot stuff.
if ((packet.Parameter == "chat:DSGateway" || packet.Parameter == "chat:DataShare") && BDS.IsPoliceBot(bot.Config.Username, packet.Parameter))
{
if (!BDS.GateChecks.Contains(packet.SubParameter))
{
bot.NPSay(packet.Parameter, "BDS:BOTCHECK:DIRECT:" + packet.SubParameter);
BDS.ClearKickTimers(packet.SubParameter);
BDS.KickAfter(packet.Parameter, packet.SubParameter, 30, "No response to or invalid BDS:BOTCHECK. If you are not a bot, please do not join this room. Thanks.");
}
else BDS.GateChecks.Remove(packet.SubParameter);
}
// Update channel data
lock (ChannelData[packet.Parameter.ToLower()])
{
if (!ChannelData[packet.Parameter.ToLower()].Members.ContainsKey(packet.SubParameter.ToLower()))
{
Types.ChatMember member = new Types.ChatMember();
member.Name = packet.SubParameter;
member.Privclass = packet.Arguments["pc"];
member.RealName = packet.Arguments["realname"];
member.Symbol = packet.Arguments["symbol"];
member.GPC = packet.Arguments["gpc"];
member.ConnectionCount = 1;
ChannelData[packet.Parameter.ToLower()].Members.Add(member.Name.ToLower(), member);
}
else
{
ChannelData[packet.Parameter.ToLower()].Members[packet.SubParameter.ToLower()].ConnectionCount++;
}
}
}
示例4: ParseBDS
/// <summary>
/// Parses BDS messages
/// </summary>
/// <param name="bot">Bot instance</param>
/// <param name="packet">Packet object</param>
public void ParseBDS(Bot bot, dAmnPacket packet)
{
if (packet.Parameter == "chat:Botdom" && packet.Body.ToLower().StartsWith("<abbr title=\"" + bot.Config.Username.ToLower() + ": botcheck\"></abbr>"))
{
String hash = Tools.md5((bot.Config.Trigger + packet.Arguments["from"] + bot.Config.Username).Replace(" ", "").ToLower());
bot.Say(packet.Parameter, String.Format("Beep! <abbr title=\"botresponse: {0} {1} {2} {3} {4} {5}\"></abbr>", packet.Arguments["from"], bot.Config.Owner, Program.BotName, Program.Version, hash, bot.Config.Trigger));
return;
}
// Not from DS? Ignore it.
if (packet.Parameter.ToLower() != "chat:datashare" && packet.Parameter.ToLower() != "chat:dsgateway" && !syncing)
return;
// Doesn't contain segments? Ignore it.
if (!packet.Body.Contains(":"))
return;
String msg = packet.Body;
String[] bits = msg.Split(':');
String ns = packet.Parameter;
String from = packet.Arguments["from"];
String username = bot.Config.Username;
String trigger = bot.Config.Trigger;
String owner = bot.Config.Owner;
bool from_policebot = IsPoliceBot(from, packet.Parameter);
if (bits[0] == "BDS")
{
if (bits.Length >= 3 && bits[1] == "SYNC")
{
if (bits.Length == 4 && bits[2] == "REQUEST" && bits[3].ToLower() == username.ToLower())
{
if (!syncing && !isrequester && IsPoliceBot(username, "chat:DataShare", true))
{
syncwith = from.ToLower();
bot.NPSay(ns, String.Format("BDS:SYNC:RESPONSE:{0},{1},{2}", from, BDBHash(), _botinfo_database.Count));
}
}
else if (bits[2] == "BEGIN" && !isrequester && ns.StartsWith("pchat:") && syncing && ns.ToLower().Contains(syncwith) && from.ToLower() != username.ToLower())
{
bots_synced = 0;
clients_synced = 0;
foreach (var x in _botinfo_database.Values)
{
bot.NPSay(ns, String.Format("BDS:SYNC:INFO:{0},{1},{2},{3}/{4},{5},{6}", x.Name, x.Owner, x.Type, x.Version, x.BDSVersion, x.Modified, x.Trigger));
bots_synced++;
if (bots_synced % 100 == 0)
System.Threading.Thread.Sleep(250);
}
foreach (var x in _clientinfo_database.Values)
{
bot.NPSay(ns, String.Format("BDS:SYNC:CLIENTINFO:{0},{1},{2}/{3},{4}", x.Name, x.Type, x.Version, x.BDSVersion, x.Modified));
clients_synced++;
if (clients_synced % 100 == 0)
System.Threading.Thread.Sleep(250);
}
bot.NPSay(ns, "BDS:SYNC:FINISHED");
bot.NPSay(ns, "BDS:LINK:CLOSED");
bot.Part(ns);
syncwith = "";
bots_synced = 0;
clients_synced = 0;
syncing = false;
}
else if (bits.Length == 4 && bits[2] == "RESPONSE")
{
if (!bits[3].Contains(","))
return;
String[] data = bits[3].Split(',');
if (data.Length != 3)
return;
if (data[0].ToLower() != username.ToLower())
return;
if (data[1] != BDBHash())
{
syncwith = from.ToLower();
bot.NPSay(ns, "BDS:LINK:REQUEST:" + from);
}
else
{
bot.NPSay(ns, "BDS:SYNC:OKAY:" + from);
syncing = false;
}
}
else if (bits[2] == "FINISHED")
{
if (syncrns != "")
//.........这里部分代码省略.........
示例5: cmd_translate
public void cmd_translate(Bot bot, String ns, String[] args, String msg, String from, dAmnPacket packet)
{
String helpmsg = String.Format("<b>» Usage:</b><br/>{0}translate languages<br/>{0}translate <i>from_lang to_lang</i> message", " · " + bot.Config.Trigger);
if (args.Length == 1)
{
bot.Say(ns, helpmsg);
}
else
{
if (args[1] == "languages")
{
String output = String.Format("<b>» There are {0} supported language{1}:</b><br/><br/>", TranslateLangs.Count, TranslateLangs.Count == 1 ? "" : "s");
foreach (var pair in LanguageAliases)
{
output += String.Format("<b>[{0}:</b> {1}<b>]</b> ", pair.Key, pair.Value);
}
output += "<br/><br/><sub><i>* Note that at least one of the languages used in translation must be English.</i></sub>";
bot.Say(ns, output);
}
else
{
if (args.Length > 3)
{
String from_lang = args[1].ToLower(), to_lang = args[2].ToLower();
if (!TranslateLangs.Contains(from_lang))
{
if (LanguageAliases.ContainsKey(from_lang))
from_lang = LanguageAliases[from_lang];
else
{
bot.Say(ns, "<b>» Invalid from_lang.</b>");
return;
}
}
if (!TranslateLangs.Contains(to_lang))
{
if (LanguageAliases.ContainsKey(to_lang))
to_lang = LanguageAliases[to_lang];
else
{
bot.Say(ns, "<b>» Invalid to_lang.</b>");
return;
}
}
if (from_lang != "en" && to_lang != "en")
{
bot.Say(ns, "<b>» At least one of the languages must be English!</b>");
return;
}
String message = Convert.ToBase64String(Encoding.UTF8.GetBytes(WebUtility.HtmlDecode(msg.Substring(11 + args[1].Length + args[2].Length))));
lock (_translate_requests)
{
_translate_requests.Add(packet.Parameter);
bot.NPSay("chat:datashare", String.Format("BDS:TRANSLATE:REQUEST:{0},{1},{2},{3}", packet.Parameter, from_lang, to_lang, message));
}
}
else bot.Say(ns, helpmsg);
}
}
}
示例6: cmd_client
/// <summary>
/// BDS command
/// </summary>
public void cmd_client(Bot bot, String ns, String[] args, String msg, String from, dAmnPacket packet)
{
String helpmsg = String.Format("<b>» Usage:</b><br/>» {0}client info [username]<br/>» {0}client count<br/>» {0}client online [type]", bot.Config.Trigger);
// First arg is the command
if (args.Length == 1)
{
bot.Say(ns, helpmsg);
}
else
{
if (args[1] == "info")
{
if (args.Length >= 3)
{
if (_clientinfo_database.ContainsKey(args[2].ToLower()))
{
Types.ClientInfo info = _clientinfo_database[args[2].ToLower()];
ulong ts = Bot.EpochTimestamp - info.Modified;
if (ts >= UPDATE_TIME) // 7 days
{
lock (_info_requests)
{
_info_requests.Add(args[2].ToLower(), ns);
}
bot.NPSay("chat:datashare", "BDS:BOTCHECK:REQUEST:" + args[2]);
bot.Say(ns, String.Format("{0}: Data for {1} is outdated, one second while I update it...", from, args[2]));
return;
}
String output = String.Format("<b>» Information on :dev{0}:</b><br/>", info.Name);
output += String.Format("<b>Client type:</b> {0}<br/>", info.Type);
output += String.Format("<b>Client version:</b> {0}<br/>", info.Version);
output += String.Format("<b>BDS version:</b> {0}<br/>", info.BDSVersion);
output += String.Format("<b>Last modified:</b> {0} ago", Tools.FormatTime(ts));
bot.Say(ns, output);
}
else if (_botinfo_database.ContainsKey(args[2].ToLower()))
{
bot.Say(ns, String.Format("<b>» {0} is a bot. Use {1}bot info {0}</b>", args[2], bot.Config.Trigger));
}
else
{
lock (_info_requests)
{
_info_requests.Add(args[2].ToLower(), ns);
}
bot.NPSay("chat:datashare", "BDS:BOTCHECK:REQUEST:" + args[2]);
bot.Say(ns, String.Format("{0}: {1} isn't in my database yet. Requesting information, please stand by...", from, args[2]));
}
}
else
{
bot.Say(ns, helpmsg);
}
}
else if (args[1] == "count")
{
if (_clientinfo_database.Count == 0)
{
bot.Say(ns, "<b>» There are 0 clients in my local database.</b>");
return;
}
Dictionary<String, int> clients = new Dictionary<string, int>();
foreach (ClientInfo info in _clientinfo_database.Values)
{
if (!clients.ContainsKey(info.Type))
clients.Add(info.Type, 0);
clients[info.Type]++;
}
var clients_sorted = from pair in clients
orderby pair.Value descending
select pair;
String output = String.Empty;
int count = 0;
foreach (KeyValuePair<String, int> pair in clients_sorted)
{
output += String.Format("{0} ({1})<b>]</b>, <b>[</b>", pair.Key, pair.Value);
count += pair.Value;
}
bot.Say(ns, String.Format("<b>» There are {0} client{1} in my local database:</b><br/><b>» [</b>", count, count == 1 ? "" : "s") + output.Substring(0, output.Length - 10));
}
else if (args[1] == "online")
{
String type = "all";
if (args.Length >= 3)
{
type = msg.Substring(14).ToLower();
}
//.........这里部分代码省略.........
示例7: cmd_bot
/// <summary>
/// BDS command
/// </summary>
public void cmd_bot(Bot bot, String ns, String[] args, String msg, String from, dAmnPacket packet)
{
String helpmsg = String.Format("<b>» Usage:</b>{0}bot info username{0}bot count{0}bot online <i>[type]</i>{0}bot owner username <i>[online]</i>{0}bot trigger trigger", "<br/>» " + bot.Config.Trigger);
// First arg is the command
if (args.Length == 1)
{
bot.Say(ns, helpmsg);
}
else
{
if (args[1] == "info")
{
if (args.Length >= 3)
{
if (_botinfo_database.ContainsKey(args[2].ToLower()))
{
Types.BotInfo info = _botinfo_database[args[2].ToLower()];
ulong ts = Bot.EpochTimestamp - info.Modified;
if (ts >= UPDATE_TIME) // 7 days
{
lock (_info_requests)
{
_info_requests.Add(args[2].ToLower(), ns);
}
bot.NPSay("chat:datashare", "BDS:BOTCHECK:REQUEST:" + args[2]);
bot.Say(ns, String.Format("{0}: Data for {1} is outdated, one second while I update it...", from, args[2]));
return;
}
String output = String.Format("<b>» Information on :dev{0}:</b><br/>", info.Name);
output += String.Format("<b>Bot type:</b> {0}<br/>", info.Type);
output += String.Format("<b>Bot version:</b> {0}<br/>", info.Version);
output += String.Format("<b>Bot owner:</b> :dev{0}:<br/>", info.Owner);
output += String.Format("<b>Bot trigger:</b> <b><code>{0}</code></b><br/>", info.Trigger.Replace("&", "&"));
output += String.Format("<b>BDS version:</b> {0}<br/>", info.BDSVersion);
output += String.Format("<b>Last modified:</b> {0} ago", Tools.FormatTime(ts));
bot.Say(ns, output);
}
else if (_clientinfo_database.ContainsKey(args[2].ToLower()))
{
bot.Say(ns, String.Format("<b>» {0} is a client. Use {1}client info {0}</b>", args[2], bot.Config.Trigger));
}
else
{
lock (_info_requests)
{
_info_requests.Add(args[2].ToLower(), ns);
}
bot.NPSay("chat:datashare", "BDS:BOTCHECK:REQUEST:" + args[2]);
bot.Say(ns, String.Format("{0}: {1} isn't in my database yet. Requesting information, please stand by...", from, args[2]));
}
}
else
{
bot.Say(ns, helpmsg);
}
}
else if (args[1] == "count")
{
if (_botinfo_database.Count == 0)
{
bot.Say(ns, "<b>» There are 0 bots in my local database.</b>");
return;
}
Dictionary<String, int> bots = new Dictionary<string, int>();
foreach (BotInfo info in _botinfo_database.Values)
{
if (!bots.ContainsKey(info.Type))
bots.Add(info.Type, 0);
bots[info.Type]++;
}
var bots_sorted = from pair in bots
orderby pair.Value descending
select pair;
String output = String.Empty;
int count = 0;
foreach (KeyValuePair<String, int> pair in bots_sorted)
{
output += String.Format("{0} ({1})<b>]</b>, <b>[</b>", pair.Key, pair.Value);
count += pair.Value;
}
bot.Say(ns, String.Format("<b>» There are {0} bot{1} in my local database:</b><br/><b>» [</b>", count, count == 1 ? "" : "s") + output.Substring(0, output.Length - 10));
}
else if (args[1] == "online")
{
String type = "all";
if (args.Length >= 3)
{
//.........这里部分代码省略.........
示例8: cmd_bds
/// <summary>
/// BDS command
/// </summary>
public void cmd_bds(Bot bot, String ns, String[] args, String msg, String from, dAmnPacket packet)
{
// First arg is the command
if (args.Length == 1)
{
bot.Say(ns, String.Format("<b>» Usage:</b><br/>{0}bds save<br/>{0}bds update<br/>{0}bds sync username", " · " + bot.Config.Trigger));
}
else
{
String arg = args[1].ToLower();
if (arg == "save")
{
Save();
bot.Say(ns, "<b>» Database has been saved to disk.</b>");
}
else if (arg == "update")
{
if (!IsPoliceBot(bot.Config.Username))
{
bot.Say(ns, "<b>» Only policebots can do that.</b>");
return;
}
List<String> datas = new List<String>();
if (Core.ChannelData.ContainsKey("chat:datashare"))
{
ChatData cd = Core.ChannelData["chat:datashare"];
foreach (ChatMember m in cd.Members.Values)
{
if (_botcheck_privclasses.Contains(m.Privclass))
{
if (!_botinfo_database.ContainsKey(m.Name.ToLower()) || Bot.EpochTimestamp - _botinfo_database[m.Name.ToLower()].Modified >= UPDATE_TIME)
{
datas.Add(m.Name);
}
}
else if (_clientcheck_privclasses.Contains(m.Privclass))
{
if (!_clientinfo_database.ContainsKey(m.Name.ToLower()) || Bot.EpochTimestamp - _clientinfo_database[m.Name.ToLower()].Modified >= UPDATE_TIME)
{
datas.Add(m.Name);
}
}
}
}
if (datas.Count > 0)
{
bot.NPSay("chat:DataShare", "BDS:BOTCHECK:REQUEST:" + String.Join(",", datas));
bot.Say(ns, String.Format("<b>» Requested data for {0} bot{1}/client{1}.</b>", datas.Count, datas.Count == 1 ? "" : "s"));
}
else
bot.Say(ns, "<b>» No data needs to be updated.</b>");
}
else if (arg == "sync" && args.Length == 3)
{
syncing = true;
isrequester = true;
syncrns = ns;
bot.Say(ns, "<b>» Requesting sync with " + args[2] + "</b>");
bot.NPSay("chat:DataShare", "BDS:SYNC:REQUEST:" + args[2]);
}
else bot.Say(ns, String.Format("<b>» Usage:</b><br/>{0}bds save<br/>{0}bds update<br/>{0}bds sync username", " · " + bot.Config.Trigger));
}
}
示例9: evt_onjoin
public static void evt_onjoin(Bot bot, dAmnPacket packet)
{
if (packet.Parameter.ToLower() == "chat:datashare")
{
// IDS-NOTE, XFER, BOTCHECK-SYNC ?
String[] caps = new String[] { "BOTCHECK", "BOTCHECK-EXT", "SEEN"};
bot.NPSay(packet.Parameter, "BDS:PROVIDER:CAPS:" + String.Join(",", caps));
}
}