View Code? Open in Web Editor
NEW
A Discord bot written with Architecture in mind. Using all my latest knowledge regarding DI, IOC & Abstractions.
License: MIT License
disukubot's People
Contributors
Watchers
disukubot's Issues
Add an Eval command. Owner only.
Limit the amount displayed in the embed. (5)
Don't place in DB (Maybe)
Currently it is missing a few things as listed below. These should ideally be added for use in embed creation to make them more feature rich.
Title Avatar
TimeStamp
Footer Icon
These should be added to the DisukuEmbed Model
public class DisukuEmbed
{
public string Title { get ; set ; }
public string Description { get ; set ; }
public string Url { get ; set ; }
public string Thumbnail { get ; set ; }
public string ImageUrl { get ; set ; }
public string Footer { get ; set ; }
public List < Field > Fields { get ; set ; } = new List < Field > ( ) ;
}
They should also be added to the converter
public static Embed ConvertEmbed ( DisukuEmbed embed , bool inlineFields = false )
{
var discordEmbed = new EmbedBuilder( )
. WithTitle ( embed. Title)
. WithDescription ( embed. Description)
. WithCurrentTimestamp ( )
. WithColor ( Color. Blue) ;
if ( ! string . IsNullOrWhiteSpace ( embed. Url) ) { discordEmbed. WithUrl ( embed. Url) ; }
if ( ! string . IsNullOrWhiteSpace ( embed. Thumbnail) ) { discordEmbed. WithThumbnailUrl ( embed. Thumbnail) ; }
if ( ! string . IsNullOrWhiteSpace ( embed. Footer) ) { discordEmbed. WithFooter ( embed. Footer) ; }
if ( ! string . IsNullOrWhiteSpace ( embed. ImageUrl) ) { discordEmbed. WithImageUrl ( embed. ImageUrl) ; }
if ( embed. Fields. Count != 0 )
{
foreach ( var field in embed. Fields)
{
discordEmbed. AddField ( field. Title, field. Description, inlineFields) ;
}
}
return discordEmbed. Build ( ) ;
}
Add guild based prefixs to the Guild entity storage.
Set
Change
Remove (Sets it back to mention)
Disconnect the Discord Layer from the UI Frontend.
The discord layer of the project should to seperated from the project further so the UI runs independent. Possibly to add a new UI front end.. WPF/UWP who knows....
Need to refactor the TMDB Service and Command to use the DiscordMessage Abstraction now present is Disuku.Core:
Task SendDiscordMessageAsync ( ulong chanId , string message ) ;
Task SendDiscordEmbedAsync ( ulong chanId , DisukuEmbed embed ) ;
Simple command that would have an array of string stored in the DB per user.
Add TODO items.
View.
Remove.
Mark "In Progress" (Implement Status)
Mark Completed
The Music Fnctionality need to be hotswappable between Victoria and Frostbyte
I will use Victoria for now to implement the basic functionality.
When Yucked starts to impelement some playback functionality in Frostbite, I will swap over.
Make the MongoDB interface more generic.
Remove the Discord profile info from the DB.
Implement Todo into the DB ref #10
Simplify this:
public async Task LogAsync ( DisukuLog logMessage )
{
var date = $" [ { DateTimeOffset. Now: MMM d - hh:mm:ss tt} ] " ;
Append( $" { date} " , Color. DarkGray) ;
Append( $" [ { logMessage. Severity} ] " , await SeverityColor( logMessage. Severity) ) ;
Append( $" { ConvertSource( logMessage. Source) } " , Color. DarkGray) ;
Append( $" { logMessage. Message} \n " , Color. White) ;
}
XUnit Tests using MOQ should work.
Currently there is a circular dependency caused by having Core in the main Disuku project.
If Core is seperated it can be referenced in Disuku.IOC.
Store
Retrieve
Update
Exists
Currently the quote command is limmited by the state of the DisukuEmbed entity. Ideally this should be completed once the below referenced issue is completed.
Ref #33
Everything in DisukuBot/DisukuCore
should be moved into the Disuku.Core project.