initial commit
This commit is contained in:
		
							
								
								
									
										1289
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										1289
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										18
									
								
								Cargo.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								Cargo.toml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
cargo-features = ["edition2021"]
 | 
			
		||||
 | 
			
		||||
[package]
 | 
			
		||||
name = "singh4"
 | 
			
		||||
version = "0.1.0"
 | 
			
		||||
authors = [ "Amneesh Singh <natto@weirdnatto.in>" ]
 | 
			
		||||
edition = "2021"
 | 
			
		||||
 | 
			
		||||
[dependencies]
 | 
			
		||||
tracing = "*"
 | 
			
		||||
 | 
			
		||||
[dependencies.serenity]
 | 
			
		||||
version = "0.10.10"
 | 
			
		||||
features = ["cache", "framework", "standard_framework", "rustls_backend", "unstable_discord_api", "collector"]
 | 
			
		||||
 | 
			
		||||
[dependencies.tokio]
 | 
			
		||||
version = "1.0"
 | 
			
		||||
features = ["macros", "signal", "rt-multi-thread"]
 | 
			
		||||
							
								
								
									
										13
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
 | 
			
		||||
                   Version 2, December 2004
 | 
			
		||||
 | 
			
		||||
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
 | 
			
		||||
 | 
			
		||||
Everyone is permitted to copy and distribute verbatim or modified
 | 
			
		||||
copies of this license document, and changing it is allowed as long
 | 
			
		||||
as the name is changed.
 | 
			
		||||
 | 
			
		||||
           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
 | 
			
		||||
  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 | 
			
		||||
 | 
			
		||||
 0. You just DO WHAT THE FUCK YOU WANT TO.
 | 
			
		||||
							
								
								
									
										93
									
								
								flake.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								flake.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,93 @@
 | 
			
		||||
{
 | 
			
		||||
  "nodes": {
 | 
			
		||||
    "flake-utils": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1614513358,
 | 
			
		||||
        "narHash": "sha256-LakhOx3S1dRjnh0b5Dg3mbZyH0ToC9I8Y2wKSkBaTzU=",
 | 
			
		||||
        "owner": "numtide",
 | 
			
		||||
        "repo": "flake-utils",
 | 
			
		||||
        "rev": "5466c5bbece17adaab2d82fae80b46e807611bf3",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "numtide",
 | 
			
		||||
        "repo": "flake-utils",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1622966049,
 | 
			
		||||
        "narHash": "sha256-6g+28v94ISkVk9TBSsITVOnB2slK8plieWPIF2jo/l0=",
 | 
			
		||||
        "owner": "nixos",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "fbfb79400a08bf754e32b4d4fc3f7d8f8055cf94",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "nixos",
 | 
			
		||||
        "ref": "nixos-unstable",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs_2": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1617325113,
 | 
			
		||||
        "narHash": "sha256-GksR0nvGxfZ79T91UUtWjjccxazv6Yh/MvEJ82v1Xmw=",
 | 
			
		||||
        "owner": "nixos",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "54c1e44240d8a527a8f4892608c4bce5440c3ecb",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "root": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixpkgs": "nixpkgs",
 | 
			
		||||
        "rust-overlay": "rust-overlay",
 | 
			
		||||
        "utils": "utils"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "rust-overlay": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "flake-utils": "flake-utils",
 | 
			
		||||
        "nixpkgs": "nixpkgs_2"
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1623034161,
 | 
			
		||||
        "narHash": "sha256-cbw9X+nVFcpIuBga0hkbtzXbW2fyDWBon6oUN/uQmu0=",
 | 
			
		||||
        "owner": "oxalica",
 | 
			
		||||
        "repo": "rust-overlay",
 | 
			
		||||
        "rev": "0b952cdfa37f8b0fc70fc75fbd4605227cd0b272",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "oxalica",
 | 
			
		||||
        "repo": "rust-overlay",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "utils": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1622445595,
 | 
			
		||||
        "narHash": "sha256-m+JRe6Wc5OZ/mKw2bB3+Tl0ZbtyxxxfnAWln8Q5qs+Y=",
 | 
			
		||||
        "owner": "numtide",
 | 
			
		||||
        "repo": "flake-utils",
 | 
			
		||||
        "rev": "7d706970d94bc5559077eb1a6600afddcd25a7c8",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "numtide",
 | 
			
		||||
        "repo": "flake-utils",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "root": "root",
 | 
			
		||||
  "version": 7
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										54
									
								
								flake.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								flake.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
{
 | 
			
		||||
  description = "singh4 discord bot";
 | 
			
		||||
 | 
			
		||||
  inputs = {
 | 
			
		||||
    nixpkgs.url = github:nixos/nixpkgs/nixos-unstable;
 | 
			
		||||
    utils.url = github:numtide/flake-utils;
 | 
			
		||||
    rust-overlay.url = github:oxalica/rust-overlay;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  outputs = { self, nixpkgs, utils, rust-overlay }:
 | 
			
		||||
    utils.lib.eachDefaultSystem
 | 
			
		||||
      (system:
 | 
			
		||||
        let
 | 
			
		||||
          overlays = [ (import rust-overlay) ];
 | 
			
		||||
          pkgs = import nixpkgs {
 | 
			
		||||
            inherit system overlays;
 | 
			
		||||
          };
 | 
			
		||||
        in
 | 
			
		||||
        rec {
 | 
			
		||||
          devShells = with pkgs; {
 | 
			
		||||
            default = mkShell
 | 
			
		||||
              {
 | 
			
		||||
                buildInputs = [
 | 
			
		||||
                  rust-bin.nightly.latest.default
 | 
			
		||||
                  rust-analyzer
 | 
			
		||||
                ];
 | 
			
		||||
              };
 | 
			
		||||
            bare = mkShell
 | 
			
		||||
              {
 | 
			
		||||
                buildInputs = [
 | 
			
		||||
                  rust-bin.nightly.latest.default
 | 
			
		||||
                ];
 | 
			
		||||
              };
 | 
			
		||||
            withLSP = mkShell
 | 
			
		||||
              {
 | 
			
		||||
                buildInputs = [
 | 
			
		||||
                  rust-bin.nightly.latest.default
 | 
			
		||||
                  rust-analyzer
 | 
			
		||||
                ];
 | 
			
		||||
              };
 | 
			
		||||
          };
 | 
			
		||||
          devShell = devShells.default;
 | 
			
		||||
          defaultPackage = pkgs.rustPlatform.buildRustPackage rec {
 | 
			
		||||
            pname = "singh4";
 | 
			
		||||
            version = "0.1.0";
 | 
			
		||||
            src = ./.;
 | 
			
		||||
            nativeBuildInputs = with pkgs; [
 | 
			
		||||
              rust-bin.nightly.latest.default
 | 
			
		||||
            ];
 | 
			
		||||
            cargoSha256 = "sha256-DhWWUNDpDsao6lOogoM5UfUgrUfEmZvCpY0pxmr4/mI=";
 | 
			
		||||
          };
 | 
			
		||||
        }
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										18
									
								
								src/handler/mod.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/handler/mod.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
use serenity::{
 | 
			
		||||
    async_trait,
 | 
			
		||||
    model::{event::ResumedEvent, gateway::Ready},
 | 
			
		||||
    prelude::*,
 | 
			
		||||
};
 | 
			
		||||
use tracing::info;
 | 
			
		||||
 | 
			
		||||
pub struct Handler;
 | 
			
		||||
 | 
			
		||||
#[async_trait]
 | 
			
		||||
impl EventHandler for Handler {
 | 
			
		||||
    async fn ready(&self, _: Context, ready: Ready) {
 | 
			
		||||
        println!("{} connected bhay", ready.user.name);
 | 
			
		||||
    }
 | 
			
		||||
    async fn resume(&self, _: Context, _: ResumedEvent) {
 | 
			
		||||
        info!("how th when the");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										77
									
								
								src/main.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								src/main.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,77 @@
 | 
			
		||||
mod handler;
 | 
			
		||||
use handler::Handler;
 | 
			
		||||
use serenity::{
 | 
			
		||||
    client::bridge::gateway::ShardManager,
 | 
			
		||||
    framework::{
 | 
			
		||||
        standard::{
 | 
			
		||||
            help_commands,
 | 
			
		||||
            macros::help,
 | 
			
		||||
            Args, CommandGroup, CommandResult, HelpOptions,
 | 
			
		||||
        },
 | 
			
		||||
        StandardFramework,
 | 
			
		||||
    },
 | 
			
		||||
    http::Http,
 | 
			
		||||
    model::{channel::Message, id::UserId},
 | 
			
		||||
    prelude::*,
 | 
			
		||||
};
 | 
			
		||||
use std::{collections::HashSet, env, sync::Arc};
 | 
			
		||||
use tracing::error;
 | 
			
		||||
 | 
			
		||||
struct ShardManagerContainer;
 | 
			
		||||
impl TypeMapKey for ShardManagerContainer {
 | 
			
		||||
    type Value = Arc<Mutex<ShardManager>>;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[help]
 | 
			
		||||
#[max_levenshtein_distance(2)]
 | 
			
		||||
#[indention_prefix = "+"]
 | 
			
		||||
#[lacking_role = "Nothing"]
 | 
			
		||||
#[wrong_channel = "Strike"]
 | 
			
		||||
async fn my_help(
 | 
			
		||||
    context: &Context,
 | 
			
		||||
    msg: &Message,
 | 
			
		||||
    args: Args,
 | 
			
		||||
    help_options: &'static HelpOptions,
 | 
			
		||||
    groups: &[&'static CommandGroup],
 | 
			
		||||
    owners: HashSet<UserId>,
 | 
			
		||||
) -> CommandResult {
 | 
			
		||||
    let _ = help_commands::with_embeds(context, msg, args, help_options, groups, owners).await;
 | 
			
		||||
    Ok(())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[tokio::main]
 | 
			
		||||
async fn main() {
 | 
			
		||||
    let token = env::var("DISCORD_TOKEN").expect("Token daal madarchod");
 | 
			
		||||
    let http = Http::new_with_token(&token);
 | 
			
		||||
    let (owners, bot_id) = match http.get_current_application_info().await {
 | 
			
		||||
        Ok(info) => {
 | 
			
		||||
            let mut owners = HashSet::new();
 | 
			
		||||
            owners.insert(info.owner.id);
 | 
			
		||||
            match http.get_current_user().await {
 | 
			
		||||
                Ok(bot_id) => (owners, bot_id.id),
 | 
			
		||||
                Err(why) => panic!("Could not access the bot id: {:?}", why),
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        Err(why) => panic!("Could not access application info: {:?}", why),
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    let framework = StandardFramework::new()
 | 
			
		||||
        .configure(|c| c.owners(owners).prefix(","))
 | 
			
		||||
        .help(&MY_HELP);
 | 
			
		||||
 | 
			
		||||
    let mut client = Client::builder(&token)
 | 
			
		||||
        .framework(framework)
 | 
			
		||||
        .event_handler(Handler)
 | 
			
		||||
        .application_id(*bot_id.as_u64())
 | 
			
		||||
        .await
 | 
			
		||||
        .expect("Client no wokey");
 | 
			
		||||
 | 
			
		||||
    {
 | 
			
		||||
        let mut data = client.data.write().await;
 | 
			
		||||
        data.insert::<ShardManagerContainer>(client.shard_manager.clone());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if let Err(why) = client.start().await {
 | 
			
		||||
        error!("Client error: {:?}", why);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user