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
Limit the amount displayed in the embed. (5)
Don't place in DB (Maybe)
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.
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
XUnit Tests using MOQ should work.
Everything in DisukuBot/DisukuCore
should be moved into the Disuku.Core project.
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....
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.
Add an Eval command. Owner only.
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
Store
Retrieve
Update
Exists
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 ( ) ;
}
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) ;
}
Make the MongoDB interface more generic.
Remove the Discord profile info from the DB.
Implement Todo into the DB ref #10
Add guild based prefixs to the Guild entity storage.
Set
Change
Remove (Sets it back to mention)
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 ) ;