Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using WyrmTale;
- public class BotWorker : LocalSingletonBehaviour<BotWorker> {
- public enum States {
- Stopped, Working
- }
- public States State {
- get {
- return state;
- }
- set {
- state = value;
- OnStateChanged.Invoke(value);
- }
- }
- public event Action<States> OnStateChanged = delegate { };
- private States state;
- private VkApi vkApi;
- private Dictionary<int,int> lastMessages = new Dictionary<int,int>();
- private readonly static int BOT_ID = -150683496;
- public void Launch (string token) {
- if (vkApi != null) return;
- lastMessages = LastMessagesDataController.I.Load();
- vkApi = VkApi.GetVkApi(token);
- State = States.Working;
- StartCoroutine(WorkingCoroutine());
- }
- public void ShutDown () {
- State = States.Stopped;
- StopAllCoroutines();
- vkApi = null;
- LastMessagesDataController.I.Save(lastMessages);
- }
- public override void DoDestroy () {
- LastMessagesDataController.I.Save(lastMessages);
- base.DoDestroy();
- }
- private IEnumerator WorkingCoroutine () {
- while (State == States.Working) {
- vkApi.GetDialogs(20,OnGetDialogs);
- yield return new WaitForSeconds(7F);
- }
- }
- private void OnGetDialogs (List<JSON> items) {
- foreach (JSON i in items) {
- MessageIsActual(i);
- }
- }
- private void MessageIsActual (JSON item) {
- JSON message = item.ToJSON("message");
- int user_id = message.ToInt("user_id");
- vkApi.GetHistory(user_id,1,MessageIsActualCallback);
- }
- private void MessageIsActualCallback (List<JSON> items) {
- if (items.Count.Equals(0)) return;
- int from_id = items[0].ToInt("from_id");
- if (BOT_ID.Equals(from_id)) return;
- int user_id = items[0].ToInt("user_id");
- int message_id = items[0].ToInt("id");
- string body = items[0].ToString("body");
- HandleMessage(body,user_id,message_id,!lastMessages.ContainsKey(user_id));
- }
- private void HandleMessage (string body,int user_id,int message_id,bool firstMessage = true) {
- if (lastMessages.ContainsKey(user_id)) {
- if (!lastMessages[user_id].Equals(message_id)) {
- if (body.ToLower().Contains("скинь гачимучи")) {
- vkApi.SendMessageWithVideo(user_id,PhrasesManager.I.GetRandomGachimuchiPhrase(),VideoManager.I.GetRandomGachimuchiRemix(user_id));
- lastMessages[user_id] = message_id;
- } else {
- vkApi.SendMessage(user_id,"Напиши мне 'Скинь гачимучи' и я тебе скину годный ремикс");
- lastMessages[user_id] = message_id;
- }
- }
- } else {
- vkApi.SendMessage(user_id,PhrasesManager.WelcomePhrase);
- lastMessages.Add(user_id,message_id);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement