public Task <IEnumerable <IReply> > Invoke(TelegramMessageEventArgs input) { var gs = new GameState(_command); _command.CurrentState = gs; return(gs.BeginGame()); }
public async Task <IEnumerable <IReply> > Invoke(TelegramMessageEventArgs args) { //There can be placed special invoke logic IEnumerable <IReply> result = await OnInvoke(args); return(result); }
protected override async Task <IEnumerable <IReply> > OnInvoke(TelegramMessageEventArgs input) { string board = GetBoard(input.Message.Text); string output = await GetThreadsList(board); return(new TextReply(output).Yield()); }
protected override Task <IEnumerable <IReply> > OnInvoke(TelegramMessageEventArgs input) { string expression = input.Message.Text.Substring(1); WolframAlpha wolfram = new WolframAlpha(ApiToken); QueryResult results = wolfram.Query(expression); if (results == null) { return(Task.FromResult(Nothing)); } var sb = new StringBuilder(); foreach (var pod in results.Pods) { sb.AppendLine(pod.Title); if (pod.SubPods == null) { continue; } foreach (var subPod in pod.SubPods) { sb.AppendLine(subPod.Title); sb.AppendLine(subPod.Plaintext); } } return(FromResult(new TextReply(sb.ToString()))); }
protected override async Task <IEnumerable <IReply> > OnInvoke(TelegramMessageEventArgs input) { string anekdot = await Task.Run(() => GetAnekdot()); string decoded = HttpUtility.HtmlDecode(anekdot); //no idea if required return(new TextReply(decoded).Yield()); }
protected override async Task <IEnumerable <IReply> > OnInvoke(TelegramMessageEventArgs input) { int poolSize = 6393; int index = _random.Next(poolSize) + 1; byte[] gif = await GetGif(index); return(new VideoReply(gif).Yield()); }
public Task <IEnumerable <IReply> > Invoke(TelegramMessageEventArgs input) { if (MessageEquals(input, "всё", "все", "конец", "завершить", "end")) { _command.CurrentState = new BeginGameState(_command); return(FromResult(new TextReply("Викторина завершена"))); } if (MessageEquals(input, "не знаю")) { string answer = _currentQuestion.Answer; _currentQuestion = _questions.PickRandom(); return(Task.FromResult((IEnumerable <IReply>) new IReply[] { new TextReply($"Правильный ответ: {answer}"), new TextReply($"Следующий вопрос: {_currentQuestion.Text}") })); } if (MessageEquals(input, "счет", "счёт", "score")) { int score = _records.GetPoints(input.From); return(Task.FromResult((IEnumerable <IReply>) new IReply[] { new TextReply($"Счет игрока {input.From.Username}: {score}"), })); } if (MessageEquals(input, "топ")) { int count = 10; string top = _records.Data.OrderByDescending(t => t.Value) .Select((t, i) => $"{i+1}. {t.Key.FirstName} {t.Key.LastName} - {t.Value}") .Take(count) .StringJoin("\r\n"); return(Task.FromResult((IEnumerable <IReply>) new IReply[] { new TextReply($"Топ-{count} игроков:\r\n\r\n" + top), })); } if (MessageEquals(input, _currentQuestion.Answer)) { string answer = _currentQuestion.Answer; _currentQuestion = _questions.PickRandom(); _records.AddPoints(input.From, PointsPerCorrectAnswer); return(Task.FromResult((IEnumerable <IReply>) new IReply[] { new TextReply($"Правильно, {input.From.FirstName} ты получаешь {PointsPerCorrectAnswer} очков! Это {answer}"), new TextReply($"Следующий вопрос: {_currentQuestion.Text}") })); } return(Task.FromResult(Nothing)); }
private void MessageGeneratedEvent(object sender, TelegramMessageEventArgs e) { if (e.Immediately) { Sender.Add(e.TelegramMessage); } else { Sender.Enqueue(e.TelegramMessage); } }
protected override async Task <IEnumerable <IReply> > OnInvoke(TelegramMessageEventArgs input) { var user = await TryGet <User>(_client, "getme"); if (user?.Username == null) { return(Nothing); } return(new TextReply($"Привет, меня зовут {user.Username}").Yield()); }
public async Task <IEnumerable <IReply> > Invoke(TelegramMessageEventArgs input) { if (ThrottleFilter != null && !ThrottleFilter.CanExecute()) { TimeSpan remainingTime = ThrottleFilter.Frequency.Value - (DateTime.Now - ThrottleFilter.LastExecution); return(new TextReply(GetOverThrottleText(remainingTime)).Yield()); } IEnumerable <IReply> result = await OnInvoke(input); ThrottleFilter?.Executed(); return(result); }
private void GenerateMessage(TelegramMessageEventArgs e, bool nonPriorityQueue = false) { EventHandler <TelegramMessageEventArgs> handler; if (nonPriorityQueue) { handler = NonPriorityMessageGenerated; } else { handler = MessageGenerated; } handler?.Invoke(this, e); }
public async Task <IEnumerable <IReply> > Invoke(TelegramMessageEventArgs input) { var result = new List <IReply>(); foreach (var command in Commands) { if (command.ShouldInvoke(input)) { var output = await command.Invoke(input); result.AddRange(output); } } return(result); }
// end private void UpdatesThread() { Logger.LogMessage("Бот запущен."); while (isRun) { var updates = GetUpdates(); foreach (var update in updates) { updateOffset = update.UpdateId + 1; if (update.CallbackQuery != null && OnCallbackQuery != null) { var args = new CallbackQueryEventArgs { CallbackQuery = update.CallbackQuery }; OnCallbackQuery(args); } if (update.Message != null && OnMessage != null) { var args = new TelegramMessageEventArgs { ChatId = update.Message.Chat.Id, MessageId = update.Message.MessageId, From = update.Message.From, Message = update.Message }; OnMessage(args); } if (update.InlineQuery != null && OnInlineQuery != null) { var args = new InlineQueryEventArgs { InlineQuery = update.InlineQuery }; OnInlineQuery(args); } } System.Threading.Thread.Sleep(1000); } }
private async Task ProcessMessage(Message message) { var args = new TelegramMessageEventArgs { ChatId = message.Chat.Id, MessageId = message.MessageId, From = message.From, Message = message }; var results = await _invoker.Invoke(args); foreach (var result in results) { //сюда reply sender } }
protected override async Task <IEnumerable <IReply> > OnInvoke(TelegramMessageEventArgs input) { byte[] image; try { image = await GetRandomCatImage(); } catch (WebException ex) { Logger.Log(ex); return(Nothing); } return(new IReply[] { new ImageReply(image, "Кто-то сказал " + FindCatWord(input.Message.Text) + "???") }); }
private async Task ProcessMessage(Message message) { var args = new TelegramMessageEventArgs { ChatId = message.Chat.Id, MessageId = message.MessageId, From = message.From, Message = message }; var results = await _invoker.Invoke(args); foreach (var result in results) { await _replySender.Send(result, args.ChatId); await Task.Delay(300); } }
protected override async Task <IEnumerable <IReply> > OnInvoke(TelegramMessageEventArgs input) { return((await GetRandomXkcd()).Yield()); }
public override bool ShouldInvoke(TelegramMessageEventArgs input) { return(MessageEquals(input, "xkcd")); }
public bool ShouldInvoke(TelegramMessageEventArgs input) { return(true); }
public override bool ShouldInvoke(TelegramMessageEventArgs input) { return(MessageEquals(input, "ролл", "roll", "/roll")); }
public bool ShouldInvoke(TelegramMessageEventArgs input) { return(MessageEquals(input, "викторина")); }
private void NonPriorityMessageGeneratedEvent(object sender, TelegramMessageEventArgs e) { Bot.NonPriorityMessageSender.Enqueue(e.TelegramMessage); }
public abstract Task <IEnumerable <IReply> > OnInvoke(TelegramMessageEventArgs input);
//Abstract methods public abstract bool ShouldInvoke(TelegramMessageEventArgs args);
protected static bool MessageEquals(TelegramMessageEventArgs args, params string[] values) { return(StringEqualsToOneOf(args?.Message?.Text, values)); }
public override bool ShouldInvoke(TelegramMessageEventArgs input) { OneRequestPer(TimeSpan.FromSeconds(5)); return(MessageEquals(input, "gif", "гифочку", "гифку", "гиф")); }
public override bool ShouldInvoke(TelegramMessageEventArgs input) { string prefix = "харкач"; return(MessageEquals(input, prefix) || Regex.IsMatch(input.Message.Text, prefix + @" +\/.", RegexOptions.IgnoreCase)); }
public override bool ShouldInvoke(TelegramMessageEventArgs input) { OneRequestPer(TimeSpan.FromSeconds(30)); return(input?.Message?.Text.StartsWith("!") ?? false); }
protected override Task <IEnumerable <IReply> > OnInvoke(TelegramMessageEventArgs input) { return(FromResult(new TextReply(_random.Next(0, 101).ToString()))); }
public override bool ShouldInvoke(TelegramMessageEventArgs input) { OneRequestPer(TimeSpan.FromSeconds(5)); return(input?.Message?.Text?.ToUpper().Contains("КОТ") ?? false); }