Code Monkey home page Code Monkey logo

coggie-bot's People

Contributors

arcadedan avatar dependabot[bot] avatar github-actions[bot] avatar skarlett avatar t3mpt0n avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

t3mpt0n arcadedan

coggie-bot's Issues

Improve Documentation.

As of 1e4652a the state of documentation is poor at best. Many steps have become stale.

Nix currently is the only officially support deployment. The following objectives should be met to increase the ease of use.

Objectives

  • Documentation for producing docker images
  • Write guides on deploying coggiebot manually and provide documentation per crate feature.
  • The "hacking.md" needs more coherent instructions, and separated from codebase regulations.

Cogs features [future feature]

Features

  • nixos-compat check or qemu to spawn virtual environments
  • pre-release-cmd
  • nix store feature flag
  • feature-list-cmd +config
  • dj-room +config
  • self documenting
  • vpn to website

Sandbox:

  • Allow code samples to be compiled and ran from messages
  • Allow analysis tool chain of samples
  • make coggiebot extensible commands through cogs.nix and external flakes
  • containers sandbox
  • import arbitrary flakes and use their expressions

v1.4.0

v1.4

[ x ]
#48

  • dj-room
  • mockingbird

[ x ]
#49

  • docs

[ ] auto-updater nixos
[ x ] auto-updater linux

v1.4.1

[ ] pre-release-cmd
[ ] nix store feature flag
[ ] feature-list-cmd +config
[ ] dj-room +config
[ ? ] maybe add createFeature function to compose the set

  • subject to change

announced but no specific deadline

[ ] compilers
[ ] nix-based extensions called cogs.

features-list

[ ] allow coggiebot to know what features it was compiled with -- something like a compile time configuration file

  • current ideas are using nix to generate a json file it parses at compile time
  • or parse the cargo.toml file, pass it into nix as json file and then pass that back into coggiebot as compile time data

Make coggiebot more hackable

Currently there is no universal system for adding extra components outside of using rust. Effectively there should be some feature parity with http-cgi scripts. The a child process is ran with input provided by the message as stdin. Data written to stdout is considered the response for the message.

The strategy for formulating embeds/replies has not been specified yet.

Commands will be mappied onto universal identifiers, and placed as commands inside coggiebot's controllers. This could be built upon #141

Implement QueueStrategy [Round Robin] <Coauthor: Conic>

Objectives:

  • Impl framework for queue dispatching (QueueStrategy) #128

Why it's called round robin:

image
the sampling cycles across several queues taking one off of each
if it's not your turn, your can still edit, remove, add things to your personal queue. When it IS your turn, an item is popped from your queue

1.5->2.0 roll out

[ ] const config #33 + dj-room (1.5)
[X] finish demix #31 + prerelease #34 (1.6)
[ ] finish #28 (comment) (1.7)
[ ] features modify const-config (1.8)
[ ] nixos auto updater (1.9) dropped
[ ] nixos as stable release (2.0) dropped

and finally then at the start of 2.0 #30

autoupdater - vanilla linux

between fed 8th, and fed 9th, a commit happened that broke the auto-updater for linux.

Systemd is no longer activating the script on a timely basis.

Feb 08 21:03:36 ip-10-0-0-149 update[2410483]: start migrating
Feb 08 21:03:36 ip-10-0-0-149 update[2410523]: Warning: Can't execute disable on the unit file path. Proceeding with the unit name.
Feb 08 21:03:36 ip-10-0-0-149 update[2410523]: Removed /etc/systemd/system/multi-user.target.wants/coggiebotd.service.
Feb 08 21:03:36 ip-10-0-0-149 update[2410523]: Removed /etc/systemd/system/coggiebotd.service.
Feb 08 21:03:36 ip-10-0-0-149 update[2410540]: Warning: Can't execute disable on the unit file path. Proceeding with the unit name.
Feb 08 21:03:36 ip-10-0-0-149 update[2410540]: Removed /etc/systemd/system/multi-user.target.wants/coggiebotd-update.service.
Feb 08 21:03:36 ip-10-0-0-149 update[2410540]: Removed /etc/systemd/system/coggiebotd-update.service.
Feb 08 21:03:37 ip-10-0-0-149 systemd[1]: coggiebotd-update.service: Current command vanished from the unit file, execution of the command list won't be resumed.
Feb 08 21:03:37 ip-10-0-0-149 update[2410556]: Warning: Can't execute disable on the unit file path. Proceeding with the unit name.
Feb 08 21:03:37 ip-10-0-0-149 update[2410556]: Removed /etc/systemd/system/timers.target.wants/coggiebotd-update.timer.
Feb 08 21:03:37 ip-10-0-0-149 update[2410556]: Removed /etc/systemd/system/coggiebotd-update.timer.
Feb 08 21:03:41 ip-10-0-0-149 update[2410572]: these 16 derivations will be built:

Last automatic activation

demix

[ ] XXXify url playing
[ ] arl tester

systemd fails auto-update

-- Journal begins at Sun 2022-08-07 02:13:38 UTC, ends at Mon 2023-03-20 15:41:49 UTC. --
Mar 20 14:44:27 ip-10-0-0-149 update[4034209]: hint: git branch -m
Mar 20 14:44:27 ip-10-0-0-149 update[4034209]: Initialized empty Git repository in /tmp/coggie-bot.update.6aSvtY9b/.git/
Mar 20 14:44:27 ip-10-0-0-149 update[4034211]: From https://github.com/Skarlett/coggie-bot
Mar 20 14:44:27 ip-10-0-0-149 update[4034211]: * branch master -> FETCH_HEAD
Mar 20 14:44:27 ip-10-0-0-149 update[4034211]: * [new branch] master -> origin/master
Mar 20 14:44:27 ip-10-0-0-149 update[4034205]: /
Mar 20 14:44:27 ip-10-0-0-149 update[4034230]: /nix/store/a6746jbdn8qav5vfmx4la9ybls10g90n-update/bin/update: line 33: /bin/coggiebot: No such file or directory
Mar 20 14:44:27 ip-10-0-0-149 update[4034205]: start migrating
Mar 20 14:44:27 ip-10-0-0-149 update[4034231]: /nix/store/a6746jbdn8qav5vfmx4la9ybls10g90n-update/bin/update: line 45: /result/disable: No such file or directory
Mar 20 14:44:27 ip-10-0-0-149 update[4034232]: /nix/store/a6746jbdn8qav5vfmx4la9ybls10g90n-update/bin/update: line 47: /bin/nix: No such file or directory
Mar 20 14:44:27 ip-10-0-0-149 update[4034233]: /nix/store/a6746jbdn8qav5vfmx4la9ybls10g90n-update/bin/update: line 48: /result/enable: No such file or directory
Mar 20 14:44:28 ip-10-0-0-149 update[4034250]: Too few arguments.
Mar 20 14:44:28 ip-10-0-0-149 update[4034251]: Failed to start update-timer.service: Unit update-timer.service not found.
Mar 20 14:44:28 ip-10-0-0-149 update[4034205]: migrating finished
Mar 20 14:44:28 ip-10-0-0-149 systemd[1]: coggiebotd-update.service: Succeeded.
Mar 20 14:44:28 ip-10-0-0-149 systemd[1]: Finished Automatically update coggiebotd..
Mar 20 14:59:29 ip-10-0-0-149 systemd[1]: Starting Automatically update coggiebotd....

audio playback response bot issues

How it (may) trigger:

  • Moving the bot across channels on discord seems to "lose" what room it is in.
  • "leave" and "join" do not affect the issue

Actual Error:

Failed to join voice channel: Driver(Ws(Json(Error("invalid value: integer 18, expected opcode in [0--9] + [12--13]", line: 1, column: 8))))

prerelease

allows forks & branches to be selectively tested by users

v1.4.0 fails self updater [vanilla linux]

Mar 19 11:37:53 ip-10-0-0-149 update[3841300]: building '/nix/store/52zpk5jjila9fv9j0dwssk3rzbdjfa0x-coggiebot-1.3.8.drv'...
Mar 19 11:38:24 ip-10-0-0-149 update[3841300]: building '/nix/store/v9djw1xh35gr4nwyc8fcpy9i73p0p9sw-coggiebot.drv'...
Mar 19 11:38:25 ip-10-0-0-149 update[3854245]: /nix/store/2l7svj8slv13x9zpp97y7dpw4w6zir9c-update/bin/update: line 48: /var/coggiebot/result/enable: No such file or directory
Mar 19 11:38:26 ip-10-0-0-149 update[3854262]: Failed to restart coggiebotd.service: Unit coggiebotd.service not found.
Mar 19 11:38:26 ip-10-0-0-149 update[3854263]: Failed to start coggiebotd.service: Unit coggiebotd.service not found.
Mar 19 11:38:26 ip-10-0-0-149 update[3841211]: migrating finished
Mar 19 11:38:26 ip-10-0-0-149 systemd[1]: coggiebotd-update.service: Succeeded.
Mar 19 11:38:26 ip-10-0-0-149 systemd[1]: Started coggiebotd-update.service.
Mar 19 11:38:26 ip-10-0-0-149 systemd[1]: coggiebotd-update.service: Consumed 28min 54.634s CPU time.

Crawl mockingbird links

on valid links, crawl the metadata, and inform users about it via reactions

Objectives


  • ability to pull metadata from link parsers #128
  • fix download scrubber #130
  • fork deemix into deemix-min #130
  • use setup a static web server
  • wireguard
  • internal dns

mockingbird

[ x ] copy paste example from songbird
[ x ] make nix compatible with features that bring in new packages
[   ] make plan for demix
[   ] figure out dependency issues in coggiebot-features in nix
[   ] integration tests

Add Command: `track-metadata`

Objectives

  • Allow users to use track-metadata to see the json response behind the media. Metadata should be dropped as a file attachment.

Add data outside of rust build chain.

Coggie should take in a file of some kind, json/toml/etc, and include it as a compile time datatype. This datatype should be extensible during the build process, and by external programs packaged with coggiebot, via nix, and any other desirable means.

Objectives

  • constants.json (or likewise) is implemented and used during the build to provide data.
  • data is accessible globally throughout the project.
  • some kind of framework is provided for applications to extend data.
  • configurations maybe changed by guilds without changing the defaults provided by the constants.json

[draft] Proposal: recovery, preservation, and prevention

Proposal: add capabilities against misuse of administrative actions. These capabilities should never take effect during normal operations, They require no administrative actions to collect information, and data collected on individual shouldn't ever contain message contents, attachments, username, nickname, biography, account connections, or any other artifacts deemed as PII, or uniquely identifiable with the exception of the discord account ID & nicknames.

Preventive action:

  • Captcha
  • Quarantine (Mute actions)

Preservation & cleanup goals:

  • Ability to set snapshots and rollback to a known to them.
  • Remove spam/junk
  • Restore channel names, channel settings, channel permissions, category names, category permissions, category settings, nicknames

Some statistics maybe collected for each user individually.

  • Average time delay between messages sent by the same user repeatably.
    Each room will contain 2 Indicators, The average
  • Hashing message contents, and deferring the percentage of change to the
  • Created invitations, their dependents, and their accumulative sum of total members joined over the time of the previous member derived from the original author of the invite.
  • Other administrative actions such as granting/removing permissions, changing channel data, server data,
    (spam, mass channel/message deletion, super invite accumulation

Restore points

Keep a snapshot of the servers configuration via json

[draft] [rfc] VM labs via http & ssh

Purpose:

Users may conduct demonstrations, test deployments, experiment, jailed execution, game servers, emulate instruction sets,

Objectives

  • ideally, we'd like each VM to have the ability to talk to eachother over a private network.
  • VMs should persist for a set amount of time, and then clean up after themselves.

screenshot

VM Termination

Causes of termination will be:

  • nested cpu virtualization
  • exhaustive resource usage
  • using vms as proxies or tunnels
  • grey/malicious activities such as blacklisted domains, spamming, untargeted port scanning, untargeted webcrawls, or otherwise deemed inappropriate from an administer

User story

A terminal session will be available by request of the operator by invoking:
(Fig A)

@botname lab <OS>?@<version>

Fig A.

Accepted

A direct message will be sent to the operator, with the prompt:

Lab VM <identity> started:
  webshell (administrator): https://<domain>/<feature-name>/<identity>/auth
  webshell         (share): https://<domain>/<feature-name>/<identity>/auth?u=<auth-session>
       ssh (administrator): <identity>@<domain>
  tls-dhe-aes-256-gcm-sha256, <more ciphers>
                          .., ...

The VM will be placed in a private network, and will be unable to access other people's VMs unless explicitly agreed upon between both operators.

Though the box doesn't allow ingress traffic, you may ask Coggiebot to open ports on your behalf.
An example of invoking the procedure:

@botname lab <id> --open-port 4489

The purposal for the backend implementation would consist of kubernetes, a vpn, and a bastion host. Each node in the private cluster would consist of primary

Smart command rerouter

Objectives

  • When a partial command is submitted, attempt to fix it.
  • @bot <link type> should be determined from the link context

Ideas

Use an LLM to determine an answer based on context.

allow coggie bot to scobble to last.fm

you should be able to link your last.fm account to coggie bot, then when songs are played (50% or 4 minutes, whichever comes first) anyone who hasn't opted out with not listening will get a scrobble for the song that was played.

artist links don't work

deemix-metadata returns {"error": {"name": "LinkNotRecognized", "reason": "Link%20is%20not%20recognized."}}

Objectives

  • allow transforming artist links

add queue `list` command

there is no way to current to view the queued songs.

Objectives

  • @bot ls|list: should produce a list of the currently enqueued.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.