forked from adam/discord-bot-shtik
Compare commits
4 Commits
6d181e2b68
...
581fddf6f9
Author | SHA1 | Date | |
---|---|---|---|
581fddf6f9 | |||
bed8d3cbef | |||
2dd9e903db | |||
ef31418166 |
@ -1,5 +1,6 @@
|
||||
namespace vassago.Behavior;
|
||||
namespace vassago;
|
||||
#pragma warning disable 4014 //the "not awaited" error
|
||||
using vassago.Behavior;
|
||||
using vassago.Models;
|
||||
using System;
|
||||
using System.Linq;
|
||||
@ -12,18 +13,18 @@ public class Behaver
|
||||
{
|
||||
private List<Account> SelfAccounts { get; set; } = new List<Account>();
|
||||
private User SelfUser { get; set; }
|
||||
public static List<Behavior> Behaviors { get; private set; } = new List<Behavior>();
|
||||
public static List<vassago.Behavior.Behavior> Behaviors { get; private set; } = new List<vassago.Behavior.Behavior>();
|
||||
internal Behaver()
|
||||
{
|
||||
var subtypes = AppDomain.CurrentDomain.GetAssemblies()
|
||||
.SelectMany(domainAssembly => domainAssembly.GetTypes())
|
||||
.Where(type => type.IsSubclassOf(typeof(Behavior)) && !type.IsAbstract &&
|
||||
.Where(type => type.IsSubclassOf(typeof(vassago.Behavior.Behavior)) && !type.IsAbstract &&
|
||||
type.GetCustomAttributes(typeof(StaticPlzAttribute),false)?.Any() == true)
|
||||
.ToList();
|
||||
|
||||
foreach (var subtype in subtypes)
|
||||
{
|
||||
Behaviors.Add((Behavior)Activator.CreateInstance(subtype));
|
||||
Behaviors.Add((vassago.Behavior.Behavior)Activator.CreateInstance(subtype));
|
||||
}
|
||||
}
|
||||
static Behaver() { }
|
@ -44,7 +44,7 @@ namespace vassago
|
||||
|
||||
public Task StopAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
8
Jenkinsfile
vendored
8
Jenkinsfile
vendored
@ -13,5 +13,13 @@ pipeline {
|
||||
archiveArtifacts artifacts: 'bin/Release/net7.0/linux-x64/publish/*'
|
||||
}
|
||||
}
|
||||
stage('Deploy'){
|
||||
when{
|
||||
branch "release"
|
||||
}
|
||||
steps{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -17,6 +17,8 @@ public class ChattingContext : DbContext
|
||||
public ChattingContext(DbContextOptions<ChattingContext> options) : base(options) { }
|
||||
public ChattingContext() : base() { }
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
=> optionsBuilder.UseNpgsql(Shared.DBConnectionString)
|
||||
{
|
||||
optionsBuilder.UseNpgsql(Shared.DBConnectionString)
|
||||
.EnableSensitiveDataLogging(true); //who the fuck is looking at log output but not allowed to see it? this should be on by default.
|
||||
}
|
||||
}
|
@ -6,8 +6,7 @@ var builder = WebApplication.CreateBuilder(args);
|
||||
// Add services to the container.
|
||||
builder.Services.AddControllersWithViews();
|
||||
builder.Services.AddSingleton<IHostedService, vassago.ConsoleService>();
|
||||
builder.Services.AddDbContext<ChattingContext>(options =>
|
||||
options.UseNpgsql(builder.Configuration.GetConnectionString("ChattingContext") ));
|
||||
builder.Services.AddDbContext<ChattingContext>();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
|
40
README.md
40
README.md
@ -1,8 +1,46 @@
|
||||
# discord-bot
|
||||
|
||||
copy appsettings.json and fill it in
|
||||
copy appsettings.json to appsettings.ENV.json and fill it in. dotnet seems to understand files called appsettings.json (and appsettings.xml?) and knows how to overwrite *specific values found within* the .[ENV].[extension] version
|
||||
|
||||
# auth link
|
||||
|
||||
https://discord.com/oauth2/authorize?client_id=913003037348491264&permissions=274877942784&scope=bot
|
||||
that's read messages/view channels, send messages, send messages in threads, and attach files. but not add reactions?
|
||||
|
||||
# concepts
|
||||
|
||||
## Data Types
|
||||
|
||||
### Accounts
|
||||
|
||||
a `User` can have multiple `Account`s. e.g., @adam:greyn.club? that's an "account". I, however, am a `User`. An `Account` has references to the `Channels` its seen in.
|
||||
|
||||
### Attachment
|
||||
|
||||
debating whether to save a copy of every single attachment. Discord allows 25MB attachments, and shtikbot lives in several art channels.
|
||||
|
||||
### Channel
|
||||
|
||||
a place where communication can happen. any level of these can have any number of children. In matrix, everything is a "room" - even spaces and threads. Seems like a fine idea. So for vassago, a discord "channel" is a channel. a "thread" is a child of that channel. a "category" is a parent of that channel. A "server" (formerly "guild") is a parent of that channel. and fuck it, Discord itself is a "channel".
|
||||
|
||||
### ChannelPermissions
|
||||
|
||||
the permissions Vassago has for a channel. MaxAttachmentBytes, etc. (...shouldn't this be just part of Channel? You're *always* going down the hierarchy until you find an override. permissions should always inherit, right?)
|
||||
|
||||
### FeaturePermission
|
||||
|
||||
the permissions of a feature. It can be restricted to accounts, to users, to channels. It has an internal name... and tag? and it can be (or not be) inheritable?
|
||||
|
||||
### Message
|
||||
|
||||
a message (duh). features bools for "mentions me", the external ID, the reference to the account, the channel.
|
||||
|
||||
### User
|
||||
|
||||
a person or program who operates an account. recognizing that 2 `Account`s belong to 1 `User` can be done by that user (using LinkMe). I should be able to collapse myself automatically.
|
||||
|
||||
## Behavior
|
||||
|
||||
both a "feature" and an "anti-feature". a channel might dictate something isn't allowed (lewdness in a g-rated channel). A person might not be allowed to do something - lots of me-only things like directing other bots (and the now rendered-moot Torrent feature). A behavior might need a command alias in a particular channel (freedomunits in jubel's)
|
||||
|
||||
so "behavior" might need to tag other data types? do I have it do a full select every time we get a message? ...no, only if the (other) triggering conditions are met. Then you can take your time.
|
@ -1,6 +1,7 @@
|
||||
@{
|
||||
ViewData["Title"] = "Home Page";
|
||||
}
|
||||
<div id="tree"></div>
|
||||
<div>
|
||||
<a href="Users">Users</a>
|
||||
</div>
|
||||
@ -10,3 +11,6 @@
|
||||
<div>
|
||||
<a href="Channels">Channels</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="Behaviors">Behaviors</a>
|
||||
</div>
|
@ -16,6 +16,7 @@
|
||||
</div>
|
||||
<script src="~/lib/jquery/dist/jquery.min.js"></script>
|
||||
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="bootstrap-treeview.js"></script>
|
||||
<script src="~/js/site.js" asp-append-version="true"></script>
|
||||
@await RenderSectionAsync("Scripts", required: false)
|
||||
</body>
|
||||
|
@ -12,5 +12,5 @@
|
||||
"TwitchConfigs": [
|
||||
],
|
||||
"exchangePairsLocation": "assets/exchangepairs.json",
|
||||
"DBConnectionString": "Host=localhost;Database=db;Username=db;Password=db"
|
||||
"DBConnectionString": "Host=azure.club;Database=db;Username=user;Password=password"
|
||||
}
|
||||
|
37
wwwroot/css/bootstrap-treeview.css
vendored
Normal file
37
wwwroot/css/bootstrap-treeview.css
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
/* =========================================================
|
||||
* bootstrap-treeview.css v1.2.0
|
||||
* =========================================================
|
||||
* Copyright 2013 Jonathan Miles
|
||||
* Project URL : http://www.jondmiles.com/bootstrap-treeview
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ========================================================= */
|
||||
|
||||
.treeview .list-group-item {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.treeview span.indent {
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.treeview span.icon {
|
||||
width: 12px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.treeview .node-disabled {
|
||||
color: silver;
|
||||
cursor: not-allowed;
|
||||
}
|
1249
wwwroot/js/bootstrap-treeview.js
vendored
Normal file
1249
wwwroot/js/bootstrap-treeview.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user