Skip to content

Benzo-Fury/Unionize

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

92 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

A Better Marriage Bot

A free to use, modern Discord bot for creating families within Discord

wakatime

Table Of Contents

Why?

  • Supports poly relationships.
  • Modern & Minimalistic
  • Made for speed

Technical ๐Ÿ› ๏ธ

sern Handler

Unionize has been written using the latest version of the sern bot framework. I've been a supporter of this framework for years and I highly recommend them for your next bot.

Databases

Unionize runs 2 databases consecutively for different purposes. Neo4j is used to store relationships between users and MongoDB is used for everything else.

Neo4j

Modules will never access the N4j client directly and therefor never handle or use cypher. All commands use the models created for them (N4jUser, N4jGuild, etc) or interact with the data interpreter.

Mongodb

Our use of MongoDB is less strict due to its already strong model like ecosystem. This allows commands to interact with the DB via these models.

Graphing ๐Ÿ“Š

Family trees can be viewed with the /tree command. At the point of writing this, this command uses graphviz to render a pretty bad looking but great functionality graph. In future this will use D3 and a headless browser and look something like:

Versioning ๐Ÿท๏ธ

Unionize uses semantic versioning along with pre release labels. The format is followed:

{flag}-{major}.{minor}.{hotfix}

Usable Flags

Version Name Flag Description
stable s Fully tested and production-ready release.
alpha a Early development version, unstable and may contain breaking changes.
beta b Feature-complete but may still contain bugs.
release candidate rc Nearly stable but requires final testing.

Usage Docs

Proposals

Lifetime

The lifetime of a proposal will work as followed:

graph TD;
    proposalCreated(Proposal created)
    proposalDenied(Proposal is auto-denied)
    proposalDeleted(Proposal deleted)


    proposalCreated-->|Wait 48hrs|isResponse{{Has there been a response?}}
    isResponse-->yes & no

    yes-->|Wait 48 hrs|proposalDeleted
    no-->proposalDenied

    proposalDenied-->|Wait 48 hrs|proposalDeleted
Loading

Incest Levels ๐Ÿ‘ฌ

Use this table to understand what IL correlates to what relationships. Keep in mind only premium users can modify their IL.

IL Level Allowed Relationships Examples
0 (Strict) No relatives at all Only completely unrelated people can marry
1 Distant cousins (8th+ cousin, removed) "8th cousin 2 times removed"
2 Moderate cousins (5th+ cousin) "5th cousin", "5th cousin 1 time removed"
3 Close cousins (3rd+ cousin) "3rd cousin", "4th cousin"
4 First cousins allowed "1st cousin"
5 Sibling of spouse, grandnieces/nephews "niece/nephew", "aunt/uncle"
6 Siblings allowed "sibling"
7 Parent-child, grandparent-grandchild allowed "parent", "grandparent"

๐Ÿš€ Future Plans

These are ideas and planned features that are likely to be implemented but are not yet confirmed.

๐Ÿ”น Database & Query Improvements

  • Convert predefined Cypher files into dynamically generated Cypher queries in JavaScript.

    • Allows more flexible queries without needing to specify ON CREATE parameters every time.
    • Improves performance and adaptability.
  • Future command execution should prioritize models over the Neo4j Data Interpreter:

    • A refined plugin should create models for the user executing the command.
    • These models will be accessible via state and have methods for easier data interaction.
    • Reduces dependency on direct database queries.

โค๏ธ Relationship & Interaction Features

  • Love Levels

    • Users will have love levels with anyone they are related to (directly or indirectly).
    • Love levels will be stored in a MongoDB collection.
    • Some interact commands may be partner-only.
    • Love Level Decay:
      • Love levels slowly decrease over time.
      • Decay rate can be customized (/set-decay-rate)โ€”potentially a premium feature.
    • Love levels will affect certain commands (e.g., /kiss animations change based on love level).
  • Memory Book / Relationship Milestones

    • Keeps track of key events like:
      • First kisses ๐Ÿ’‹
      • Adoptions ๐Ÿก
      • Marriage anniversaries ๐Ÿ’
    • This could be a premium-only feature.
  • Memories Feature (like Facebook Memories?)

    • Sends reminders like:
      • "It's your 3-month anniversary!" ๐ŸŽ‰
      • "You've been married for 6 months!" ๐Ÿฅณ
      • Or a command /relation-length that checks how long you've had a relationship with a specified user.
        • Changes response or adds different emojis dependant on the relation.
    • Could be sent via DMs or appear when using relevant commands.
    • Possibly a premium-only feature.
  • Daily Challenges

    • Example: "Hug 3 members in your tree today!"
    • Completing challenges could increase love level or earn bonus rewards.

๐ŸŽ‰ Seasonal Events & Special Commands

  • Introduce seasonal or limited-time events:
    • ๐ŸŽƒ Halloween: /carve-pumpkin
    • ๐ŸŽ„ Christmas: /decorate-tree
    • ๐Ÿ’– Valentineโ€™s Day: Love level boosts
    • These events could boost love levels and encourage user engagement.

๐Ÿ› ๏ธ Command & System Enhancements

  • Implement cooldowns on certain commands.
  • Determine if premium features should be per-user or per-guild.
    • If per-guild, admins could use /set-decay-rate for global settings.

๐Ÿ”น Premium Features

  • Higher traversal depth for family trees.
  • Lower decay rate for love levels.
  • Exclusive seasonal events and memories.

Other

  • Remove the language manager from global namespace.

About

A free to use, modern Discord bot for creating families within Discord

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 2

  •  
  •