initial commit
This commit is contained in:
		
							
								
								
									
										21
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
name: main
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
  pull_request:
 | 
			
		||||
  workflow_dispatch:
 | 
			
		||||
jobs:
 | 
			
		||||
  packages:
 | 
			
		||||
    name: test packages
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v2.3.4
 | 
			
		||||
      - uses: cachix/install-nix-action@v13
 | 
			
		||||
        with:
 | 
			
		||||
          install_url: https://github.com/numtide/nix-flakes-installer/releases/download/nix-2.4pre20210429_d15a196/install
 | 
			
		||||
          extra_nix_config: |
 | 
			
		||||
            experimental-features = nix-command flakes
 | 
			
		||||
      - uses: cachix/cachix-action@v10
 | 
			
		||||
        with:
 | 
			
		||||
          name: natto1784
 | 
			
		||||
          authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
 | 
			
		||||
      - run: nix build
 | 
			
		||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
target/
 | 
			
		||||
result
 | 
			
		||||
							
								
								
									
										1307
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										1307
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										16
									
								
								Cargo.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								Cargo.toml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
[package]
 | 
			
		||||
name = "singh3"
 | 
			
		||||
version = "0.1.0"
 | 
			
		||||
authors = [ "Amneesh Singh <natto@weirdnatto.in>" ]
 | 
			
		||||
edition = "2018"
 | 
			
		||||
 | 
			
		||||
[dependencies]
 | 
			
		||||
tracing = "0.1.22"
 | 
			
		||||
 | 
			
		||||
[dependencies.serenity]
 | 
			
		||||
version = "0.10.8"
 | 
			
		||||
features = ["cache", "framework", "standard_framework", "rustls_backend", "unstable_discord_api"]
 | 
			
		||||
 | 
			
		||||
[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
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										37
									
								
								flake.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								flake.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
{
 | 
			
		||||
  description = "A simple filehost written in rust";
 | 
			
		||||
 | 
			
		||||
  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
 | 
			
		||||
    {
 | 
			
		||||
      devShell = with pkgs; mkShell {
 | 
			
		||||
        buildInputs = [
 | 
			
		||||
          rust-bin.nightly.latest.default
 | 
			
		||||
          rust-analyzer
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
      defaultPackage = pkgs.rustPlatform.buildRustPackage rec {
 | 
			
		||||
        pname = "singh3";
 | 
			
		||||
        version = "0.1.0";
 | 
			
		||||
        src = ./. ;
 | 
			
		||||
        nativeBuildInputs = with pkgs; [
 | 
			
		||||
          rust-bin.nightly.latest.default
 | 
			
		||||
        ];
 | 
			
		||||
        cargoSha256 = "sha256-qpmDIhgHcSoX/wIJlKNULxrEr+KOrCdXOi7HDuCdlFM=";
 | 
			
		||||
      };
 | 
			
		||||
    }
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								src/general.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/general.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
use serenity::prelude::*;
 | 
			
		||||
use serenity::model::prelude::*;
 | 
			
		||||
use serenity::framework::standard::{
 | 
			
		||||
    CommandResult,
 | 
			
		||||
    macros::command
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#[command]
 | 
			
		||||
pub async fn ping(ctx: &Context, msg: &Message) -> CommandResult {
 | 
			
		||||
    msg.reply(ctx, "Pong!").await?;
 | 
			
		||||
    Ok(())
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										104
									
								
								src/main.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								src/main.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,104 @@
 | 
			
		||||
mod general;
 | 
			
		||||
use serenity::{
 | 
			
		||||
    async_trait,
 | 
			
		||||
    client::bridge::gateway::ShardManager,
 | 
			
		||||
    framework::{standard::macros::group, StandardFramework},
 | 
			
		||||
    http::Http,
 | 
			
		||||
    model::{
 | 
			
		||||
        event::ResumedEvent,
 | 
			
		||||
        gateway::Ready,
 | 
			
		||||
        interactions::{ApplicationCommand, Interaction, InteractionResponseType, InteractionType, InteractionData},
 | 
			
		||||
    },
 | 
			
		||||
    prelude::*,
 | 
			
		||||
};
 | 
			
		||||
use std::{collections::HashSet, env, sync::Arc};
 | 
			
		||||
use tracing::{error, info};
 | 
			
		||||
 | 
			
		||||
pub struct ShardManagerContainer;
 | 
			
		||||
use general::*;
 | 
			
		||||
 | 
			
		||||
impl TypeMapKey for ShardManagerContainer {
 | 
			
		||||
    type Value = Arc<Mutex<ShardManager>>;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct Handler;
 | 
			
		||||
 | 
			
		||||
#[async_trait]
 | 
			
		||||
impl EventHandler for Handler {
 | 
			
		||||
    async fn interaction_create(&self, ctx: Context, interaction: Interaction) {
 | 
			
		||||
        if interaction.kind == InteractionType::ApplicationCommand {
 | 
			
		||||
            if let Some(InteractionData::ApplicationCommand(data)) = interaction.data.as_ref() {
 | 
			
		||||
                let content = match data.name.as_str() {
 | 
			
		||||
                    "ping" => "Hey, I'm alive!".to_string(),
 | 
			
		||||
                    _ => "not implemented :(".to_string(),
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                if let Err(why) = interaction
 | 
			
		||||
                    .create_interaction_response(&ctx.http, |response| {
 | 
			
		||||
                        response
 | 
			
		||||
                            .kind(InteractionResponseType::ChannelMessageWithSource)
 | 
			
		||||
                            .interaction_response_data(|message| message.content(content))
 | 
			
		||||
                    })
 | 
			
		||||
                    .await
 | 
			
		||||
                {
 | 
			
		||||
                    println!("Cannot respond to slash command: {}", why);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async fn ready(&self, _: Context, ready: Ready) {
 | 
			
		||||
        info!("{} connected bhay", ready.user.name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async fn resume(&self, _: Context, _: ResumedEvent) {
 | 
			
		||||
        info!("how th when the");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[group]
 | 
			
		||||
#[commands(ping)]
 | 
			
		||||
struct General;
 | 
			
		||||
 | 
			
		||||
#[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("xx"))
 | 
			
		||||
        .group(&GENERAL_GROUP);
 | 
			
		||||
 | 
			
		||||
    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());
 | 
			
		||||
    }
 | 
			
		||||
    let _ = ApplicationCommand::create_global_application_command(&http, |a| {
 | 
			
		||||
        a.name("ping").description("A simple ping command")
 | 
			
		||||
    })
 | 
			
		||||
    .await;
 | 
			
		||||
 | 
			
		||||
    if let Err(why) = client.start().await {
 | 
			
		||||
        error!("Client error: {:?}", why);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user