forked from adam/discord-bot-shtik
Revert "restful with the db"
Some checks failed
gitea.arg.rip/vassago/pipeline/head There was a failure building this commit
Some checks failed
gitea.arg.rip/vassago/pipeline/head There was a failure building this commit
This reverts commit 203c6af3cf
.
This commit is contained in:
parent
03fdb56190
commit
6298b037b6
@ -22,7 +22,7 @@ namespace vassago
|
|||||||
public async Task StartAsync(CancellationToken cancellationToken)
|
public async Task StartAsync(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var dbc = new ChattingContext();
|
var dbc = new ChattingContext();
|
||||||
await dbc.Database.MigrateAsync();
|
await dbc.Database.MigrateAsync(cancellationToken);
|
||||||
|
|
||||||
if (DiscordTokens?.Any() ?? false)
|
if (DiscordTokens?.Any() ?? false)
|
||||||
foreach (var dt in DiscordTokens)
|
foreach (var dt in DiscordTokens)
|
||||||
|
@ -20,9 +20,14 @@ public class DiscordInterface
|
|||||||
internal const string PROTOCOL = "discord";
|
internal const string PROTOCOL = "discord";
|
||||||
internal DiscordSocketClient client;
|
internal DiscordSocketClient client;
|
||||||
private bool eventsSignedUp = false;
|
private bool eventsSignedUp = false;
|
||||||
|
private ChattingContext _db;
|
||||||
private static SemaphoreSlim discordChannelSetup = new SemaphoreSlim(1, 1);
|
private static SemaphoreSlim discordChannelSetup = new SemaphoreSlim(1, 1);
|
||||||
private Channel protocolAsChannel;
|
private Channel protocolAsChannel;
|
||||||
|
|
||||||
|
public DiscordInterface()
|
||||||
|
{
|
||||||
|
_db = new ChattingContext();
|
||||||
|
}
|
||||||
|
|
||||||
public async Task Init(string token)
|
public async Task Init(string token)
|
||||||
{
|
{
|
||||||
@ -47,8 +52,7 @@ public class DiscordInterface
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var db = new ChattingContext();
|
protocolAsChannel = _db.Channels.FirstOrDefault(c => c.ParentChannel == null && c.Protocol == PROTOCOL);
|
||||||
protocolAsChannel = db.Channels.FirstOrDefault(c => c.ParentChannel == null && c.Protocol == PROTOCOL);
|
|
||||||
if (protocolAsChannel == null)
|
if (protocolAsChannel == null)
|
||||||
{
|
{
|
||||||
protocolAsChannel = new Channel()
|
protocolAsChannel = new Channel()
|
||||||
@ -66,8 +70,8 @@ public class DiscordInterface
|
|||||||
};
|
};
|
||||||
protocolAsChannel.SendMessage = (t) => { throw new InvalidOperationException($"discord itself cannot accept text"); };
|
protocolAsChannel.SendMessage = (t) => { throw new InvalidOperationException($"discord itself cannot accept text"); };
|
||||||
protocolAsChannel.SendFile = (f, t) => { throw new InvalidOperationException($"discord itself cannot send file"); };
|
protocolAsChannel.SendFile = (f, t) => { throw new InvalidOperationException($"discord itself cannot send file"); };
|
||||||
db.Channels.Add(protocolAsChannel);
|
_db.Channels.Add(protocolAsChannel);
|
||||||
db.SaveChanges();
|
_db.SaveChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@ -110,10 +114,9 @@ public class DiscordInterface
|
|||||||
|
|
||||||
private async Task SelfConnected()
|
private async Task SelfConnected()
|
||||||
{
|
{
|
||||||
var db = new ChattingContext();
|
|
||||||
var selfAccount = UpsertAccount(client.CurrentUser, protocolAsChannel);
|
var selfAccount = UpsertAccount(client.CurrentUser, protocolAsChannel);
|
||||||
selfAccount.DisplayName = client.CurrentUser.Username;
|
selfAccount.DisplayName = client.CurrentUser.Username;
|
||||||
await db.SaveChangesAsync();
|
await _db.SaveChangesAsync();
|
||||||
|
|
||||||
Behaver.Instance.MarkSelf(selfAccount);
|
Behaver.Instance.MarkSelf(selfAccount);
|
||||||
}
|
}
|
||||||
@ -137,7 +140,8 @@ public class DiscordInterface
|
|||||||
}
|
}
|
||||||
await Behaver.Instance.ActOn(m);
|
await Behaver.Instance.ActOn(m);
|
||||||
m.ActedOn = true; // for its own ruposess it might act on it later, but either way, fuck it, we checked.
|
m.ActedOn = true; // for its own ruposess it might act on it later, but either way, fuck it, we checked.
|
||||||
|
|
||||||
|
_db.SaveChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UserJoined(SocketGuildUser arg)
|
private void UserJoined(SocketGuildUser arg)
|
||||||
@ -185,31 +189,28 @@ public class DiscordInterface
|
|||||||
}
|
}
|
||||||
internal vassago.Models.Attachment UpsertAttachment(IAttachment dAttachment)
|
internal vassago.Models.Attachment UpsertAttachment(IAttachment dAttachment)
|
||||||
{
|
{
|
||||||
|
var a = _db.Attachments.FirstOrDefault(ai => ai.ExternalId == dAttachment.Id);
|
||||||
var db = new ChattingContext();
|
|
||||||
var a = db.Attachments.FirstOrDefault(ai => ai.ExternalId == dAttachment.Id);
|
|
||||||
if (a == null)
|
if (a == null)
|
||||||
{
|
{
|
||||||
a = new vassago.Models.Attachment();
|
a = new vassago.Models.Attachment();
|
||||||
db.Attachments.Add(a);
|
_db.Attachments.Add(a);
|
||||||
}
|
}
|
||||||
a.ContentType = dAttachment.ContentType;
|
a.ContentType = dAttachment.ContentType;
|
||||||
a.Description = dAttachment.Description;
|
a.Description = dAttachment.Description;
|
||||||
a.Filename = dAttachment.Filename;
|
a.Filename = dAttachment.Filename;
|
||||||
a.Size = dAttachment.Size;
|
a.Size = dAttachment.Size;
|
||||||
a.Source = new Uri(dAttachment.Url);
|
a.Source = new Uri(dAttachment.Url);
|
||||||
db.SaveChanges();
|
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
internal Message UpsertMessage(IUserMessage dMessage)
|
internal Message UpsertMessage(IUserMessage dMessage)
|
||||||
{
|
{
|
||||||
var db = new ChattingContext();
|
var m = _db.Messages.FirstOrDefault(mi => mi.ExternalId == dMessage.Id.ToString() && mi.Protocol == PROTOCOL);
|
||||||
var m = db.Messages.FirstOrDefault(mi => mi.ExternalId == dMessage.Id.ToString() && mi.Protocol == PROTOCOL);
|
|
||||||
if (m == null)
|
if (m == null)
|
||||||
{
|
{
|
||||||
m = new Message();
|
m = new Message();
|
||||||
m.Protocol = PROTOCOL;
|
m.Protocol = PROTOCOL;
|
||||||
db.Messages.Add(m);
|
_db.Messages.Add(m);
|
||||||
}
|
}
|
||||||
m.Attachments = m.Attachments ?? new List<vassago.Models.Attachment>();
|
m.Attachments = m.Attachments ?? new List<vassago.Models.Attachment>();
|
||||||
if (dMessage.Attachments?.Any() == true)
|
if (dMessage.Attachments?.Any() == true)
|
||||||
@ -234,18 +235,15 @@ public class DiscordInterface
|
|||||||
|
|
||||||
m.Reply = (t) => { return dMessage.ReplyAsync(t); };
|
m.Reply = (t) => { return dMessage.ReplyAsync(t); };
|
||||||
m.React = (e) => { return attemptReact(dMessage, e); };
|
m.React = (e) => { return attemptReact(dMessage, e); };
|
||||||
db.SaveChanges();
|
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
internal Channel UpsertChannel(IMessageChannel channel)
|
internal Channel UpsertChannel(IMessageChannel channel)
|
||||||
{
|
{
|
||||||
|
Channel c = _db.Channels.FirstOrDefault(ci => ci.ExternalId == channel.Id.ToString() && ci.Protocol == PROTOCOL);
|
||||||
var db = new ChattingContext();
|
|
||||||
Channel c = db.Channels.FirstOrDefault(ci => ci.ExternalId == channel.Id.ToString() && ci.Protocol == PROTOCOL);
|
|
||||||
if (c == null)
|
if (c == null)
|
||||||
{
|
{
|
||||||
c = new Channel();
|
c = new Channel();
|
||||||
db.Channels.Add(c);
|
_db.Channels.Add(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
c.DisplayName = channel.Name;
|
c.DisplayName = channel.Name;
|
||||||
@ -255,7 +253,7 @@ public class DiscordInterface
|
|||||||
c.Protocol = PROTOCOL;
|
c.Protocol = PROTOCOL;
|
||||||
if (channel is IGuildChannel)
|
if (channel is IGuildChannel)
|
||||||
{
|
{
|
||||||
c.ParentChannel = UpsertChannel((channel as IGuildChannel).Guild, db);
|
c.ParentChannel = UpsertChannel((channel as IGuildChannel).Guild);
|
||||||
c.ParentChannel.SubChannels.Add(c);
|
c.ParentChannel.SubChannels.Add(c);
|
||||||
}
|
}
|
||||||
else if (channel is IPrivateChannel)
|
else if (channel is IPrivateChannel)
|
||||||
@ -277,24 +275,15 @@ public class DiscordInterface
|
|||||||
c.DisplayName = "DM: " + (channel as IPrivateChannel).Recipients?.FirstOrDefault(u => u.Id != client.CurrentUser.Id).Username;
|
c.DisplayName = "DM: " + (channel as IPrivateChannel).Recipients?.FirstOrDefault(u => u.Id != client.CurrentUser.Id).Username;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
db.SaveChanges();
|
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
internal Channel UpsertChannel(IGuild channel, ChattingContext db = null)
|
internal Channel UpsertChannel(IGuild channel)
|
||||||
{
|
{
|
||||||
db = db ?? new ChattingContext();
|
Channel c = _db.Channels.FirstOrDefault(ci => ci.ExternalId == channel.Id.ToString() && ci.Protocol == PROTOCOL);
|
||||||
Console.WriteLine($"upserting *guild*: {channel.Id}");
|
|
||||||
Channel c = db.Channels.FirstOrDefault(ci => ci.ExternalId == channel.Id.ToString() && ci.Protocol == PROTOCOL);
|
|
||||||
if (c == null)
|
if (c == null)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"don't have one already. Creating.");
|
|
||||||
c = new Channel();
|
c = new Channel();
|
||||||
db.Channels.Add(c);
|
_db.Channels.Add(c);
|
||||||
Console.WriteLine($"upserting channel {channel.Name} from discord, have to create a new one in the DB");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Console.WriteLine($"found one.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
c.DisplayName = channel.Name;
|
c.DisplayName = channel.Name;
|
||||||
@ -308,17 +297,15 @@ public class DiscordInterface
|
|||||||
|
|
||||||
c.SendMessage = (t) => { throw new InvalidOperationException($"channel {channel.Name} is guild; cannot accept text"); };
|
c.SendMessage = (t) => { throw new InvalidOperationException($"channel {channel.Name} is guild; cannot accept text"); };
|
||||||
c.SendFile = (f, t) => { throw new InvalidOperationException($"channel {channel.Name} is guild; send file"); };
|
c.SendFile = (f, t) => { throw new InvalidOperationException($"channel {channel.Name} is guild; send file"); };
|
||||||
db.SaveChanges();
|
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
internal Account UpsertAccount(IUser user, Channel inChannel)
|
internal Account UpsertAccount(IUser user, Channel inChannel)
|
||||||
{
|
{
|
||||||
var db = new ChattingContext();
|
var acc = _db.Accounts.FirstOrDefault(ui => ui.ExternalId == user.Id.ToString() && ui.SeenInChannel.Id == inChannel.Id);
|
||||||
var acc = db.Accounts.FirstOrDefault(ui => ui.ExternalId == user.Id.ToString() && ui.SeenInChannel.Id == inChannel.Id);
|
|
||||||
if (acc == null)
|
if (acc == null)
|
||||||
{
|
{
|
||||||
acc = new Account();
|
acc = new Account();
|
||||||
db.Accounts.Add(acc);
|
_db.Accounts.Add(acc);
|
||||||
}
|
}
|
||||||
acc.Username = user.Username;
|
acc.Username = user.Username;
|
||||||
acc.ExternalId = user.Id.ToString();
|
acc.ExternalId = user.Id.ToString();
|
||||||
@ -326,21 +313,18 @@ public class DiscordInterface
|
|||||||
acc.Protocol = PROTOCOL;
|
acc.Protocol = PROTOCOL;
|
||||||
acc.SeenInChannel = inChannel;
|
acc.SeenInChannel = inChannel;
|
||||||
|
|
||||||
acc.IsUser = db.Users.FirstOrDefault(u => u.Accounts.Any(a => a.ExternalId == acc.ExternalId && a.Protocol == acc.Protocol));
|
acc.IsUser = _db.Users.FirstOrDefault(u => u.Accounts.Any(a => a.ExternalId == acc.ExternalId && a.Protocol == acc.Protocol));
|
||||||
if(acc.IsUser == null)
|
if(acc.IsUser == null)
|
||||||
{
|
{
|
||||||
acc.IsUser = new User() { Accounts = new List<Account>() { acc } };
|
acc.IsUser = new User() { Accounts = new List<Account>() { acc } };
|
||||||
db.Users.Add(acc.IsUser);
|
_db.Users.Add(acc.IsUser);
|
||||||
}
|
}
|
||||||
db.SaveChanges();
|
|
||||||
return acc;
|
return acc;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Task attemptReact(IUserMessage msg, string e)
|
private Task attemptReact(IUserMessage msg, string e)
|
||||||
{
|
{
|
||||||
|
var c = _db.Channels.FirstOrDefault(c => c.ExternalId == msg.Channel.Id.ToString());
|
||||||
var db = new ChattingContext();
|
|
||||||
var c = db.Channels.FirstOrDefault(c => c.ExternalId == msg.Channel.Id.ToString());
|
|
||||||
//var preferredEmote = c.EmoteOverrides?[e] ?? e; //TODO: emote overrides
|
//var preferredEmote = c.EmoteOverrides?[e] ?? e; //TODO: emote overrides
|
||||||
var preferredEmote = e;
|
var preferredEmote = e;
|
||||||
if (Emoji.TryParse(preferredEmote, out Emoji emoji))
|
if (Emoji.TryParse(preferredEmote, out Emoji emoji))
|
||||||
|
Loading…
Reference in New Issue
Block a user