See also



The library first started as a single file script that I didn’t make versions of. When I decided to turn it into a library, I’ve set the version number based on the amount of commits I have made since the start.


[Breaking change]#

Means that the change will break functionality from previous version.

[Potentially breaking change]#

The change could break functionality from previous versions but only if it was used in a certain way.



  • Fixed voice not working due to Discord’s API changes.


  • Fixed typechecked module error


  • Fixed channel verification bug:

    • Fixes bug where messages try to be sent into channels that have not passed verification (complete button)


  • [Breaking change] Removed exceptions module, meaning that there are no DAFError derived exceptions from this version on. They are replaced with build-in Python exceptions.

  • Automatic scheme generation and management:

  • Debug levels:

  • Messages objects period automatically increases if it is less than slow-mode timeout.

  • The data_function’s input function can now also be async.


  • user_callback parameter for function can now also be a regular function instead of just async.

  • Deprecated daf.dtypes.EMBED, use discord.Embed instead.

  • [Breaking change] Removed get_sql_manager function.

    • Added logging parameter

    • Deprecated parameters server_log_output and sql_manager.

  • Logging manager objects: LoggerJSON, LoggerCSV, LoggerSQL

  • New daf.logging.get_logger() function for retrieving the logger object used.

  • daf.core.initialize() for manual control of asyncio (same as except it is async)

  • SQL:
    • SQL logging now supports Microsoft SQL Server, MySQL, PostgreSQL and SQLite databases.

    • [Breaking change] LoggerSQL’s parameters are re-arranged, new parameters of which, the dialect (mssql, sqlite, mysql, postgresql) parameter must be passed.

  • Development:
    • doc_category decorator for automatic documentation

    • Removed common module and moved constants to appropriate modules


Bug fixes:

  • Fix incorrect parameter name in documentation.


Bug fixes:

  • [Bug]: KeyError: 'code' on rate limit #198.


Bug fixes:

  • #195 VoiceMESSAGE did not delete deleted channels.

  • Exception on initialization of static server list in case any of the messages had failed their initialization.


  • Fixed [Bug]: Predefined servers' errors are not suppressed #189.

  • Support for readthedocs.


  • Changed the import import framework to import daf. Using import framework is now deprecated.

  • remove_after parameter:

    Classes: daf.guild.GUILD, daf.guild.USER, daf.message.TextMESSAGE, daf.message.VoiceMESSAGE, daf.message.DirectMESSAGE

    now support the remove_after parameter which will remove the object from the shilling list when conditions met.

  • Proxies:

    Added support for using proxies. To use a proxy pass the function with a proxy parameter

  • discord.EmbedField:

    [Breaking change] Replaced discord.EmbedField with discord.EmbedField.

  • timedelta:

    start_period and end_period now support timedelta object to specify the send period. Use of int is deprecated

    [Potentially breaking change] Replaced start_now with start_in parameter, deprecated use of bool value.

  • Channel checking:

    daf.TextMESSAGE and daf.VoiceMESSAGE now check if the given channels are actually inside the guild

  • Optionals:

    [Potentially breaking change] Made some functionality optional: voice, proxy and sql - to install use pip install discord-advert-framework[dependency here]


    [Breaking change] Removed the CLIENT object, discord.Client is now used as the CLIENT class is no longer needed due to improved startup

  • Bug fixes:
    Time slippage correction:

    This occurred if too many messages were ready at once, which resulted in discord’s rate limit, causing a permanent slip.


    Fig. 3 Time slippage correction#

    Slow mode correction:

    Whenever a channel was in slow mode, it was not properly handled. This is now fixed.


  • New cool looking web documentation (the one you’re reading now)

  • Added volume parameter to daf.VoiceMESSAGE

  • Changed channel_ids to channels for daf.VoiceMESSAGE and daf.TextMESSAGE. It can now also accept discord.<Type>Channel objects.

  • Changed user_id/ guild_id to snowflake in daf.GUILD and daf.USER. This parameter now also accept discord.Guild (daf.GUILD) and discord.User (daf.USER)

  • Added .update method to some objects for allowing dynamic modifications of initialization parameters.

  • daf.AUDIO now also accepts a YouTube link for streaming YouTube videos.

  • New Exceptions system - most functions now raise exceptions instead of just returning bool to allow better detection of errors.

  • Bug fixes and other small improvements.


  • Added support for logging into a SQL database (MS SQL Server only). See Relational Database Log (SQL).

  • function now accepts discord.Intents.

  • daf.add_object() and daf.remove_object() functions created to allow for dynamic modification of the shilling list.

  • Other small improvements.


  • JSON file logging.

  • Automatic channel removal if channel get’s deleted and message removal if all channels are removed.

  • Improved debug messages.


  • daf.DirectMESSAGE and daf.USER classes created for direct messaging.