Cleverbot is beyond stupid, but works. Not using cleverbot, but program-o.com
This commit is contained in:
parent
74ac9858dc
commit
05d6152936
@ -5,12 +5,15 @@ using NadekoBot.Attributes;
|
|||||||
using NadekoBot.Extensions;
|
using NadekoBot.Extensions;
|
||||||
using NadekoBot.Services;
|
using NadekoBot.Services;
|
||||||
using NLog;
|
using NLog;
|
||||||
using Services.CleverBotApi;
|
//using Services.CleverBotApi;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Net.Http;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Services.CleverBotApi;
|
||||||
|
|
||||||
namespace NadekoBot.Modules.Games
|
namespace NadekoBot.Modules.Games
|
||||||
{
|
{
|
||||||
@ -27,13 +30,11 @@ namespace NadekoBot.Modules.Games
|
|||||||
{
|
{
|
||||||
_log = LogManager.GetCurrentClassLogger();
|
_log = LogManager.GetCurrentClassLogger();
|
||||||
var sw = Stopwatch.StartNew();
|
var sw = Stopwatch.StartNew();
|
||||||
|
|
||||||
|
|
||||||
var bot = ChatterBotFactory.Create(ChatterBotType.CLEVERBOT);
|
|
||||||
CleverbotGuilds = new ConcurrentDictionary<ulong, Lazy<ChatterBotSession>>(
|
CleverbotGuilds = new ConcurrentDictionary<ulong, Lazy<ChatterBotSession>>(
|
||||||
NadekoBot.AllGuildConfigs
|
NadekoBot.AllGuildConfigs
|
||||||
.Where(gc => gc.CleverbotEnabled)
|
.Where(gc => gc.CleverbotEnabled)
|
||||||
.ToDictionary(gc => gc.GuildId, gc => new Lazy<ChatterBotSession>(() => bot.CreateSession(), true)));
|
.ToDictionary(gc => gc.GuildId, gc => new Lazy<ChatterBotSession>(() => new ChatterBotSession(gc.GuildId), true)));
|
||||||
|
|
||||||
sw.Stop();
|
sw.Stop();
|
||||||
_log.Debug($"Loaded in {sw.Elapsed.TotalSeconds:F2}s");
|
_log.Debug($"Loaded in {sw.Elapsed.TotalSeconds:F2}s");
|
||||||
@ -100,9 +101,7 @@ namespace NadekoBot.Modules.Games
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var cleverbot = ChatterBotFactory.Create(ChatterBotType.CLEVERBOT);
|
CleverbotGuilds.TryAdd(channel.Guild.Id, new Lazy<ChatterBotSession>(() => new ChatterBotSession(Context.Guild.Id), true));
|
||||||
|
|
||||||
CleverbotGuilds.TryAdd(channel.Guild.Id, new Lazy<ChatterBotSession>(() => cleverbot.CreateSession(), true));
|
|
||||||
|
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
@ -113,5 +112,42 @@ namespace NadekoBot.Modules.Games
|
|||||||
await ReplyConfirmLocalized("cleverbot_enabled").ConfigureAwait(false);
|
await ReplyConfirmLocalized("cleverbot_enabled").ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class ChatterBotSession
|
||||||
|
{
|
||||||
|
private static NadekoRandom rng { get; } = new NadekoRandom();
|
||||||
|
public string ChatterbotId { get; }
|
||||||
|
public string ChannelId { get; }
|
||||||
|
private int _botId = 15;
|
||||||
|
|
||||||
|
public ChatterBotSession(ulong channelId)
|
||||||
|
{
|
||||||
|
ChannelId = channelId.ToString().ToBase64();
|
||||||
|
ChatterbotId = rng.Next(0, 1000000).ToString().ToBase64();
|
||||||
|
}
|
||||||
|
|
||||||
|
private string apiEndpoint => "http://api.program-o.com/v2/chatbot/" +
|
||||||
|
$"?bot_id={_botId}&" +
|
||||||
|
"say={0}&" +
|
||||||
|
$"convo_id=nadekobot_{ChatterbotId}_{ChannelId}&" +
|
||||||
|
"format=json";
|
||||||
|
|
||||||
|
public async Task<string> Think(string message)
|
||||||
|
{
|
||||||
|
using (var http = new HttpClient())
|
||||||
|
{
|
||||||
|
var res = await http.GetStringAsync(string.Format(apiEndpoint, message)).ConfigureAwait(false);
|
||||||
|
var cbr = JsonConvert.DeserializeObject<ChatterBotResponse>(res);
|
||||||
|
//Console.WriteLine(cbr.Convo_id);
|
||||||
|
return cbr.BotSay.Replace("<br/>", "\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ChatterBotResponse
|
||||||
|
{
|
||||||
|
public string Convo_id { get; set; }
|
||||||
|
public string BotSay { get; set; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -16,7 +16,7 @@ namespace NadekoBot.Services.Impl
|
|||||||
private readonly DiscordShardedClient _client;
|
private readonly DiscordShardedClient _client;
|
||||||
private readonly DateTime _started;
|
private readonly DateTime _started;
|
||||||
|
|
||||||
public const string BotVersion = "1.2";
|
public const string BotVersion = "1.21";
|
||||||
|
|
||||||
public string Author => "Kwoth#2560";
|
public string Author => "Kwoth#2560";
|
||||||
public string Library => "Discord.Net";
|
public string Library => "Discord.Net";
|
||||||
|
@ -21,6 +21,12 @@ namespace NadekoBot.Extensions
|
|||||||
private const string arrow_left = "⬅";
|
private const string arrow_left = "⬅";
|
||||||
private const string arrow_right = "➡";
|
private const string arrow_right = "➡";
|
||||||
|
|
||||||
|
public static string ToBase64(this string plainText)
|
||||||
|
{
|
||||||
|
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
|
||||||
|
return Convert.ToBase64String(plainTextBytes);
|
||||||
|
}
|
||||||
|
|
||||||
public static Stream ToStream(this IEnumerable<byte> bytes, bool canWrite = false)
|
public static Stream ToStream(this IEnumerable<byte> bytes, bool canWrite = false)
|
||||||
{
|
{
|
||||||
var ms = new MemoryStream(bytes as byte[] ?? bytes.ToArray(), canWrite);
|
var ms = new MemoryStream(bytes as byte[] ?? bytes.ToArray(), canWrite);
|
||||||
|
Loading…
Reference in New Issue
Block a user