/// <summary> /// Say something through chat system /// </summary> /// <param Name="place">Pick user (private message) channel or battle</param> /// <param Name="channel">Channel or User Name</param> /// <param Name="inputtext">chat text</param> /// <param Name="isEmote">is message emote? (channel or battle only)</param> /// <param Name="linePrefix">text to be inserted in front of each line (example: "!pm xyz")</param> public async Task Say(SayPlace place, string channel, string inputtext, bool isEmote, string linePrefix = "") { if (String.IsNullOrEmpty(inputtext)) return; var lines = inputtext.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); foreach (var text in lines) { if (String.IsNullOrEmpty(text)) continue; var sentText = linePrefix + text; var args = new SayingEventArgs(place, channel, sentText, isEmote); Saying(this, args); if (args.Cancel) continue; switch (place) { case SayPlace.Channel: if (!JoinedChannels.ContainsKey(args.Channel)) JoinChannel(args.Channel); if (args.IsEmote) await con.SendCommand("SAYEX", args.Channel, args.Text); else await con.SendCommand("SAY", args.Channel, args.Text); break; case SayPlace.User: await con.SendCommand("SAYPRIVATE", args.Channel, args.Text); break; case SayPlace.Battle: if (args.IsEmote) await con.SendCommand("SAYBATTLEEX", args.Text); else await con.SendCommand("SAYBATTLE", args.Text); break; case SayPlace.BattlePrivate: if (args.IsEmote) await con.SendCommand("SAYBATTLEPRIVATEEX", channel, args.Text); else await con.SendCommand("SAYBATTLEPRIVATE", channel, args.Text); break; } } }
/// <summary> /// Say something through chat system /// </summary> /// <param Name="place">Pick user (private message) channel or battle</param> /// <param Name="channel">Channel or User Name</param> /// <param Name="inputtext">chat text</param> /// <param Name="isEmote">is message emote? (channel or battle only)</param> /// <param Name="linePrefix">text to be inserted in front of each line (example: "!pm xyz")</param> public async Task Say(SayPlace place, string channel, string inputtext, bool isEmote, string linePrefix = "") { if (String.IsNullOrEmpty(inputtext)) { return; } var lines = inputtext.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); foreach (var text in lines) { if (String.IsNullOrEmpty(text)) { continue; } var sentText = linePrefix + text; var args = new SayingEventArgs(place, channel, sentText, isEmote); Saying(this, args); if (args.Cancel) { continue; } switch (place) { case SayPlace.Channel: if (!JoinedChannels.ContainsKey(args.Channel)) { JoinChannel(args.Channel); } if (args.IsEmote) { await con.SendCommand("SAYEX", args.Channel, args.Text); } else { await con.SendCommand("SAY", args.Channel, args.Text); } break; case SayPlace.User: await con.SendCommand("SAYPRIVATE", args.Channel, args.Text); break; case SayPlace.Battle: if (args.IsEmote) { await con.SendCommand("SAYBATTLEEX", args.Text); } else { await con.SendCommand("SAYBATTLE", args.Text); } break; case SayPlace.BattlePrivate: if (args.IsEmote) { await con.SendCommand("SAYBATTLEPRIVATEEX", channel, args.Text); } else { await con.SendCommand("SAYBATTLEPRIVATE", channel, args.Text); } break; } } }