Removed old cleverbot stuff
This commit is contained in:
parent
bbda4c7a3b
commit
af744cb3d7
@ -1,11 +1,9 @@
|
|||||||
using Discord;
|
using Discord;
|
||||||
using Discord.Commands;
|
using Discord.Commands;
|
||||||
using Discord.WebSocket;
|
|
||||||
using NadekoBot.Attributes;
|
using NadekoBot.Attributes;
|
||||||
using NadekoBot.Extensions;
|
using NadekoBot.Extensions;
|
||||||
using NadekoBot.Services;
|
using NadekoBot.Services;
|
||||||
using NLog;
|
using NLog;
|
||||||
//using Services.CleverBotApi;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
@ -13,7 +11,6 @@ using System.Linq;
|
|||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Services.CleverBotApi;
|
|
||||||
|
|
||||||
namespace NadekoBot.Modules.Games
|
namespace NadekoBot.Modules.Games
|
||||||
{
|
{
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
/*
|
|
||||||
ChatterBotAPI
|
|
||||||
Copyright (C) 2011 pierredavidbelanger@gmail.com
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Services.CleverBotApi
|
|
||||||
{
|
|
||||||
public interface ChatterBot
|
|
||||||
{
|
|
||||||
ChatterBotSession CreateSession();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,51 +0,0 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
/*
|
|
||||||
ChatterBotAPI
|
|
||||||
Copyright (C) 2011 pierredavidbelanger@gmail.com
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Services.CleverBotApi
|
|
||||||
{
|
|
||||||
public class ChatterBotFactory
|
|
||||||
{
|
|
||||||
public static ChatterBot Create(ChatterBotType type)
|
|
||||||
{
|
|
||||||
return Create(type, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ChatterBot Create(ChatterBotType type, object arg)
|
|
||||||
{
|
|
||||||
#if GLOBAL_NADEKO
|
|
||||||
var url = "http://www.cleverbot.com/webservicemin?uc=777&botapi=nadekobot";
|
|
||||||
#else
|
|
||||||
var url = "http://www.cleverbot.com/webservicemin?uc=777&botapi=chatterbotapi";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case ChatterBotType.CLEVERBOT:
|
|
||||||
return new Cleverbot("http://www.cleverbot.com/", url, 26);
|
|
||||||
case ChatterBotType.JABBERWACKY:
|
|
||||||
return new Cleverbot("http://jabberwacky.com", "http://jabberwacky.com/webservicemin", 20);
|
|
||||||
case ChatterBotType.PANDORABOTS:
|
|
||||||
if (arg == null) throw new ArgumentException("PANDORABOTS needs a botid arg", nameof(arg));
|
|
||||||
return new Pandorabots(arg.ToString());
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
/*
|
|
||||||
ChatterBotAPI
|
|
||||||
Copyright (C) 2011 pierredavidbelanger@gmail.com
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Services.CleverBotApi
|
|
||||||
{
|
|
||||||
public interface ChatterBotSession
|
|
||||||
{
|
|
||||||
Task<ChatterBotThought> Think(ChatterBotThought thought);
|
|
||||||
Task<string> Think(string text);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
/*
|
|
||||||
ChatterBotAPI
|
|
||||||
Copyright (C) 2011 pierredavidbelanger@gmail.com
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Services.CleverBotApi
|
|
||||||
{
|
|
||||||
public class ChatterBotThought
|
|
||||||
{
|
|
||||||
public string[] Emotions { get; set; }
|
|
||||||
public string Text { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
/*
|
|
||||||
ChatterBotAPI
|
|
||||||
Copyright (C) 2011 pierredavidbelanger@gmail.com
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Services.CleverBotApi
|
|
||||||
{
|
|
||||||
public enum ChatterBotType
|
|
||||||
{
|
|
||||||
CLEVERBOT,
|
|
||||||
JABBERWACKY,
|
|
||||||
PANDORABOTS
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,116 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using System.Net;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
/*
|
|
||||||
ChatterBotAPI
|
|
||||||
Copyright (C) 2011 pierredavidbelanger@gmail.com
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Services.CleverBotApi
|
|
||||||
{
|
|
||||||
public class Cleverbot : ChatterBot
|
|
||||||
{
|
|
||||||
private readonly int endIndex;
|
|
||||||
private readonly string baseUrl;
|
|
||||||
private readonly string url;
|
|
||||||
|
|
||||||
public Cleverbot(string baseUrl, string url, int endIndex)
|
|
||||||
{
|
|
||||||
this.baseUrl = baseUrl;
|
|
||||||
this.url = url;
|
|
||||||
this.endIndex = endIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ChatterBotSession CreateSession()
|
|
||||||
{
|
|
||||||
return new CleverbotSession(baseUrl, url, endIndex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class CleverbotSession : ChatterBotSession
|
|
||||||
{
|
|
||||||
private readonly int endIndex;
|
|
||||||
private readonly string url;
|
|
||||||
private readonly IDictionary<string, string> vars;
|
|
||||||
private readonly CookieCollection cookies;
|
|
||||||
|
|
||||||
public CleverbotSession(string baseUrl, string url, int endIndex)
|
|
||||||
{
|
|
||||||
this.url = url;
|
|
||||||
this.endIndex = endIndex;
|
|
||||||
vars = new Dictionary<string, string>();
|
|
||||||
//vars["start"] = "y";
|
|
||||||
vars["stimulus"] = "";
|
|
||||||
vars["islearning"] = "1";
|
|
||||||
vars["icognoid"] = "wsf";
|
|
||||||
//vars["fno"] = "0";
|
|
||||||
//vars["sub"] = "Say";
|
|
||||||
//vars["cleanslate"] = "false";
|
|
||||||
cookies = Utils.GetCookies(baseUrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<ChatterBotThought> Think(ChatterBotThought thought)
|
|
||||||
{
|
|
||||||
vars["stimulus"] = thought.Text;
|
|
||||||
|
|
||||||
var formData = Utils.ParametersToWWWFormURLEncoded(vars);
|
|
||||||
var formDataToDigest = formData.Substring(9, endIndex);
|
|
||||||
var formDataDigest = Utils.MD5(formDataToDigest);
|
|
||||||
vars["icognocheck"] = formDataDigest;
|
|
||||||
|
|
||||||
var response = await Utils.Post(url, vars, cookies).ConfigureAwait(false);
|
|
||||||
|
|
||||||
var responseValues = response.Split('\r');
|
|
||||||
|
|
||||||
//vars[""] = Utils.StringAtIndex(responseValues, 0); ??
|
|
||||||
vars["sessionid"] = Utils.StringAtIndex(responseValues, 1);
|
|
||||||
vars["logurl"] = Utils.StringAtIndex(responseValues, 2);
|
|
||||||
vars["vText8"] = Utils.StringAtIndex(responseValues, 3);
|
|
||||||
vars["vText7"] = Utils.StringAtIndex(responseValues, 4);
|
|
||||||
vars["vText6"] = Utils.StringAtIndex(responseValues, 5);
|
|
||||||
vars["vText5"] = Utils.StringAtIndex(responseValues, 6);
|
|
||||||
vars["vText4"] = Utils.StringAtIndex(responseValues, 7);
|
|
||||||
vars["vText3"] = Utils.StringAtIndex(responseValues, 8);
|
|
||||||
vars["vText2"] = Utils.StringAtIndex(responseValues, 9);
|
|
||||||
vars["prevref"] = Utils.StringAtIndex(responseValues, 10);
|
|
||||||
//vars[""] = Utils.StringAtIndex(responseValues, 11); ??
|
|
||||||
// vars["emotionalhistory"] = Utils.StringAtIndex(responseValues, 12);
|
|
||||||
// vars["ttsLocMP3"] = Utils.StringAtIndex(responseValues, 13);
|
|
||||||
// vars["ttsLocTXT"] = Utils.StringAtIndex(responseValues, 14);
|
|
||||||
// vars["ttsLocTXT3"] = Utils.StringAtIndex(responseValues, 15);
|
|
||||||
// vars["ttsText"] = Utils.StringAtIndex(responseValues, 16);
|
|
||||||
// vars["lineRef"] = Utils.StringAtIndex(responseValues, 17);
|
|
||||||
// vars["lineURL"] = Utils.StringAtIndex(responseValues, 18);
|
|
||||||
// vars["linePOST"] = Utils.StringAtIndex(responseValues, 19);
|
|
||||||
// vars["lineChoices"] = Utils.StringAtIndex(responseValues, 20);
|
|
||||||
// vars["lineChoicesAbbrev"] = Utils.StringAtIndex(responseValues, 21);
|
|
||||||
// vars["typingData"] = Utils.StringAtIndex(responseValues, 22);
|
|
||||||
// vars["divert"] = Utils.StringAtIndex(responseValues, 23);
|
|
||||||
|
|
||||||
var responseThought = new ChatterBotThought();
|
|
||||||
|
|
||||||
responseThought.Text = Utils.StringAtIndex(responseValues, 0);
|
|
||||||
|
|
||||||
return responseThought;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<string> Think(string text)
|
|
||||||
{
|
|
||||||
return (await Think(new ChatterBotThought {Text = text}).ConfigureAwait(false)).Text;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,68 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
/*
|
|
||||||
ChatterBotAPI
|
|
||||||
Copyright (C) 2011 pierredavidbelanger@gmail.com
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Services.CleverBotApi
|
|
||||||
{
|
|
||||||
public class Pandorabots : ChatterBot
|
|
||||||
{
|
|
||||||
private readonly string botid;
|
|
||||||
|
|
||||||
public Pandorabots(string botid)
|
|
||||||
{
|
|
||||||
this.botid = botid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ChatterBotSession CreateSession()
|
|
||||||
{
|
|
||||||
return new PandorabotsSession(botid);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class PandorabotsSession : ChatterBotSession
|
|
||||||
{
|
|
||||||
private readonly IDictionary<string, string> vars;
|
|
||||||
|
|
||||||
public PandorabotsSession(string botid)
|
|
||||||
{
|
|
||||||
vars = new Dictionary<string, string>();
|
|
||||||
vars["botid"] = botid;
|
|
||||||
vars["custid"] = Guid.NewGuid().ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<ChatterBotThought> Think(ChatterBotThought thought)
|
|
||||||
{
|
|
||||||
vars["input"] = thought.Text;
|
|
||||||
|
|
||||||
var response = await Utils.Post("http://www.pandorabots.com/pandora/talk-xml", vars, null).ConfigureAwait(false);
|
|
||||||
|
|
||||||
var responseThought = new ChatterBotThought();
|
|
||||||
responseThought.Text = Utils.XPathSearch(response, "//result/that/text()");
|
|
||||||
|
|
||||||
return responseThought;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<string> Think(string text)
|
|
||||||
{
|
|
||||||
return (await Think(new ChatterBotThought {Text = text}).ConfigureAwait(false)).Text;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,148 +0,0 @@
|
|||||||
using NadekoBot.Extensions;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Xml.XPath;
|
|
||||||
|
|
||||||
/*
|
|
||||||
ChatterBotAPI
|
|
||||||
Copyright (C) 2011 pierredavidbelanger@gmail.com
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Services.CleverBotApi
|
|
||||||
{
|
|
||||||
public static class Utils
|
|
||||||
{
|
|
||||||
public static string ParametersToWWWFormURLEncoded(IDictionary<string, string> parameters)
|
|
||||||
{
|
|
||||||
string wwwFormUrlEncoded = null;
|
|
||||||
foreach (var parameterKey in parameters.Keys)
|
|
||||||
{
|
|
||||||
var parameterValue = parameters[parameterKey];
|
|
||||||
var parameter = string.Format("{0}={1}", System.Uri.EscapeDataString(parameterKey), System.Uri.EscapeDataString(parameterValue));
|
|
||||||
if (wwwFormUrlEncoded == null)
|
|
||||||
{
|
|
||||||
wwwFormUrlEncoded = parameter;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
wwwFormUrlEncoded = string.Format("{0}&{1}", wwwFormUrlEncoded, parameter);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return wwwFormUrlEncoded;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string MD5(string input)
|
|
||||||
{
|
|
||||||
// step 1, calculate MD5 hash from input
|
|
||||||
var md5 = System.Security.Cryptography.MD5.Create();
|
|
||||||
var inputBytes = Encoding.ASCII.GetBytes(input);
|
|
||||||
var hash = md5.ComputeHash(inputBytes);
|
|
||||||
|
|
||||||
// step 2, convert byte array to hex string
|
|
||||||
var sb = new StringBuilder();
|
|
||||||
for (var i = 0; i < hash.Length; i++)
|
|
||||||
{
|
|
||||||
sb.Append(hash[i].ToString("X2"));
|
|
||||||
}
|
|
||||||
return sb.ToString();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static CookieCollection GetCookies(string url)
|
|
||||||
{
|
|
||||||
CookieContainer container = new CookieContainer();
|
|
||||||
|
|
||||||
HttpResponseMessage res;
|
|
||||||
using (var handler = new HttpClientHandler() { CookieContainer = container })
|
|
||||||
using (var http = new HttpClient(handler))
|
|
||||||
{
|
|
||||||
http.AddFakeHeaders();
|
|
||||||
http.DefaultRequestHeaders.Add("ContentType", "text/html");
|
|
||||||
res = http.GetAsync(url).GetAwaiter().GetResult();
|
|
||||||
}
|
|
||||||
var response = res.Content.ReadAsStringAsync().GetAwaiter().GetResult();
|
|
||||||
|
|
||||||
return container.GetCookies(res.RequestMessage.RequestUri);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static async Task<string> Post(string url, IDictionary<string, string> parameters, CookieCollection cookies)
|
|
||||||
{
|
|
||||||
var postData = ParametersToWWWFormURLEncoded(parameters);
|
|
||||||
var postDataBytes = Encoding.ASCII.GetBytes(postData);
|
|
||||||
|
|
||||||
var request = (HttpWebRequest)WebRequest.Create(url);
|
|
||||||
|
|
||||||
if (cookies != null)
|
|
||||||
{
|
|
||||||
var container = new CookieContainer();
|
|
||||||
container.Add(new Uri(url), cookies);
|
|
||||||
request.CookieContainer = container;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
request.Method = "POST";
|
|
||||||
request.ContentType = "application/x-www-form-urlencoded";
|
|
||||||
|
|
||||||
using (var outputStream = await request.GetRequestStreamAsync())
|
|
||||||
{
|
|
||||||
outputStream.Write(postDataBytes, 0, postDataBytes.Length);
|
|
||||||
outputStream.Flush();
|
|
||||||
|
|
||||||
var response = (HttpWebResponse)await request.GetResponseAsync();
|
|
||||||
using (var responseStreamReader = new StreamReader(response.GetResponseStream()))
|
|
||||||
{
|
|
||||||
return responseStreamReader.ReadToEnd().Trim();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//HttpClientHandler handler;
|
|
||||||
//var uri = new Uri(url);
|
|
||||||
//if (cookies == null)
|
|
||||||
// handler = new HttpClientHandler();
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
// var cookieContainer = new CookieContainer();
|
|
||||||
// cookieContainer.Add(uri, cookies);
|
|
||||||
// handler = new HttpClientHandler() { CookieContainer = cookieContainer };
|
|
||||||
//}
|
|
||||||
//using (handler)
|
|
||||||
//using (var http = new HttpClient(handler))
|
|
||||||
//{
|
|
||||||
// var res = await http.PostAsync(url, new FormUrlEncodedContent(parameters)).ConfigureAwait(false);
|
|
||||||
// return await res.Content.ReadAsStringAsync().ConfigureAwait(false);
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static string XPathSearch(string input, string expression)
|
|
||||||
{
|
|
||||||
var document = new XPathDocument(new MemoryStream(Encoding.ASCII.GetBytes(input)));
|
|
||||||
var navigator = document.CreateNavigator();
|
|
||||||
return navigator.SelectSingleNode(expression).Value.Trim();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string StringAtIndex(string[] strings, int index)
|
|
||||||
{
|
|
||||||
if (index >= strings.Length) return "";
|
|
||||||
return strings[index];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -16,9 +16,7 @@ using NadekoBot.Modules.CustomReactions;
|
|||||||
using NadekoBot.Modules.Games;
|
using NadekoBot.Modules.Games;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using NadekoBot.DataStructures;
|
using NadekoBot.DataStructures;
|
||||||
using Services.CleverBotApi;
|
|
||||||
|
|
||||||
namespace NadekoBot.Services
|
namespace NadekoBot.Services
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user