Initial test
This commit is contained in:
parent
5fee38f634
commit
0896eb9ffb
8 changed files with 156 additions and 2 deletions
22
README.md
22
README.md
|
@ -1,3 +1,21 @@
|
||||||
# Discord_Elixir_test
|
# HahaYes
|
||||||
|
|
||||||
|
**TODO: Add description**
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
If [available in Hex](https://hex.pm/docs/publish), the package can be installed
|
||||||
|
by adding `haha_yes` to your list of dependencies in `mix.exs`:
|
||||||
|
|
||||||
|
```elixir
|
||||||
|
def deps do
|
||||||
|
[
|
||||||
|
{:haha_yes, "~> 0.1.0"}
|
||||||
|
]
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
|
||||||
|
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
|
||||||
|
be found at <https://hexdocs.pm/haha_yes>.
|
||||||
|
|
||||||
Toying around with Elixir and Nostrum
|
|
47
lib/commands.ex
Normal file
47
lib/commands.ex
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
defmodule HahaCommands do
|
||||||
|
@moduledoc """
|
||||||
|
Contain all the function for each commands
|
||||||
|
"""
|
||||||
|
|
||||||
|
alias Nostrum.Api
|
||||||
|
|
||||||
|
@doc """
|
||||||
|
Reply with a simple "Pong!"
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
User: h3h3 ping
|
||||||
|
|
||||||
|
Bot: Pong!
|
||||||
|
"""
|
||||||
|
|
||||||
|
def ping(msg) do
|
||||||
|
Api.create_message(msg.channel_id, "Pong!")
|
||||||
|
end
|
||||||
|
|
||||||
|
@doc """
|
||||||
|
Download the video sent by the user at 480p max.
|
||||||
|
|
||||||
|
## Parameters
|
||||||
|
|
||||||
|
- url: String that represents the URL to download a video from.
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
User: h3h3 download https://x.com/i/status/1844807680373768595
|
||||||
|
|
||||||
|
Bot: <video file>
|
||||||
|
|
||||||
|
User: h3h3 download https://www.youtube.com/watch?v=ryS7TS_J7KA
|
||||||
|
|
||||||
|
Bot: <video file>
|
||||||
|
"""
|
||||||
|
def download(msg) do
|
||||||
|
arg = String.replace(msg.content, "h3h3 download ", "")
|
||||||
|
opt = ["-f", "bestvideo[height<=?480]+bestaudio/best", arg, "-o", "#{System.tmp_dir}/test.mp4", "--force-overwrites", "--playlist-reverse", "--no-playlist", "--remux-video=mp4/webm/mov", "--no-warnings"];
|
||||||
|
|
||||||
|
System.cmd("yt-dlp", opt)
|
||||||
|
Api.delete_message(msg.channel_id, msg.id)
|
||||||
|
Api.create_message(msg.channel_id, files: ["#{System.tmp_dir}/test.mp4"])
|
||||||
|
end
|
||||||
|
end
|
12
lib/haha_yes.ex
Normal file
12
lib/haha_yes.ex
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
defmodule HahaConsumer do
|
||||||
|
use Nostrum.Consumer
|
||||||
|
|
||||||
|
def handle_event({:MESSAGE_CREATE, msg, _ws_state}) when msg.author.bot != true do
|
||||||
|
if String.starts_with?(msg.content, "h3h3 ") do
|
||||||
|
msg.content
|
||||||
|
|> String.replace("h3h3 ", "")
|
||||||
|
|> String.split(" ")
|
||||||
|
|> then(& apply(HahaCommands, String.to_atom(Enum.at(&1, 0)), [msg]))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
21
lib/haha_yes/application.ex
Normal file
21
lib/haha_yes/application.ex
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
defmodule HahaYes.Application do
|
||||||
|
# See https://hexdocs.pm/elixir/Application.html
|
||||||
|
# for more information on OTP Applications
|
||||||
|
@moduledoc false
|
||||||
|
|
||||||
|
use Application
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def start(_type, _args) do
|
||||||
|
children = [
|
||||||
|
HahaConsumer
|
||||||
|
# Starts a worker by calling: HahaYes.Worker.start_link(arg)
|
||||||
|
# {HahaYes.Worker, arg}
|
||||||
|
]
|
||||||
|
|
||||||
|
# See https://hexdocs.pm/elixir/Supervisor.html
|
||||||
|
# for other strategies and supported options
|
||||||
|
opts = [strategy: :one_for_one, name: HahaYes.Supervisor]
|
||||||
|
Supervisor.start_link(children, opts)
|
||||||
|
end
|
||||||
|
end
|
31
mix.exs
Normal file
31
mix.exs
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
defmodule HahaYes.MixProject do
|
||||||
|
use Mix.Project
|
||||||
|
|
||||||
|
def project do
|
||||||
|
[
|
||||||
|
app: :haha_yes,
|
||||||
|
version: "0.1.0",
|
||||||
|
elixir: "~> 1.17",
|
||||||
|
start_permanent: Mix.env() == :prod,
|
||||||
|
deps: deps()
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Run "mix help compile.app" to learn about applications.
|
||||||
|
def application do
|
||||||
|
[
|
||||||
|
extra_applications: [:logger],
|
||||||
|
mod: {HahaYes.Application, []}
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Run "mix help deps" to learn about dependencies.
|
||||||
|
defp deps do
|
||||||
|
[
|
||||||
|
{:nostrum, github: "Kraigie/nostrum"},
|
||||||
|
{:ex_doc, "~> 0.21", only: :dev, runtime: false}
|
||||||
|
# {:dep_from_hexpm, "~> 0.3.0"},
|
||||||
|
# {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
|
||||||
|
]
|
||||||
|
end
|
||||||
|
end
|
16
mix.lock
Normal file
16
mix.lock
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
%{
|
||||||
|
"castle": {:hex, :castle, "0.3.0", "47b1a550b2348a6d7e60e43ded1df19dca601ed21ef6f267c3dbb1b3a301fbf5", [:mix], [{:forecastle, "~> 0.1.0", [hex: :forecastle, repo: "hexpm", optional: false]}], "hexpm", "dbdc1c171520c4591101938a3d342dec70d36b7f5b102a5c138098581e35fcef"},
|
||||||
|
"certifi": {:hex, :certifi, "2.13.0", "e52be248590050b2dd33b0bb274b56678f9068e67805dca8aa8b1ccdb016bbf6", [:rebar3], [], "hexpm", "8f3d9533a0f06070afdfd5d596b32e21c6580667a492891851b0e2737bc507a1"},
|
||||||
|
"cowlib": {:hex, :cowlib, "2.13.0", "db8f7505d8332d98ef50a3ef34b34c1afddec7506e4ee4dd4a3a266285d282ca", [:make, :rebar3], [], "hexpm", "e1e1284dc3fc030a64b1ad0d8382ae7e99da46c3246b815318a4b848873800a4"},
|
||||||
|
"earmark_parser": {:hex, :earmark_parser, "1.4.41", "ab34711c9dc6212dda44fcd20ecb87ac3f3fce6f0ca2f28d4a00e4154f8cd599", [:mix], [], "hexpm", "a81a04c7e34b6617c2792e291b5a2e57ab316365c2644ddc553bb9ed863ebefa"},
|
||||||
|
"ex_doc": {:hex, :ex_doc, "0.34.2", "13eedf3844ccdce25cfd837b99bea9ad92c4e511233199440488d217c92571e8", [:mix], [{:earmark_parser, "~> 1.4.39", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "5ce5f16b41208a50106afed3de6a2ed34f4acfd65715b82a0b84b49d995f95c1"},
|
||||||
|
"forecastle": {:hex, :forecastle, "0.1.2", "f8dab08962c7a33010ebd39182513129f17b8814aa16fa453ddd536040882daf", [:mix], [], "hexpm", "8efaeb2e7d0fa24c605605e42562e2dbb0ffd11dc1dd99ef77d78884536ce501"},
|
||||||
|
"gun": {:hex, :gun, "2.1.0", "b4e4cbbf3026d21981c447e9e7ca856766046eff693720ba43114d7f5de36e87", [:make, :rebar3], [{:cowlib, "2.13.0", [hex: :cowlib, repo: "hexpm", optional: false]}], "hexpm", "52fc7fc246bfc3b00e01aea1c2854c70a366348574ab50c57dfe796d24a0101d"},
|
||||||
|
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
|
||||||
|
"makeup": {:hex, :makeup, "1.1.2", "9ba8837913bdf757787e71c1581c21f9d2455f4dd04cfca785c70bbfff1a76a3", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cce1566b81fbcbd21eca8ffe808f33b221f9eee2cbc7a1706fc3da9ff18e6cac"},
|
||||||
|
"makeup_elixir": {:hex, :makeup_elixir, "0.16.2", "627e84b8e8bf22e60a2579dad15067c755531fea049ae26ef1020cad58fe9578", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "41193978704763f6bbe6cc2758b84909e62984c7752b3784bd3c218bb341706b"},
|
||||||
|
"makeup_erlang": {:hex, :makeup_erlang, "1.0.1", "c7f58c120b2b5aa5fd80d540a89fdf866ed42f1f3994e4fe189abebeab610839", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "8a89a1eeccc2d798d6ea15496a6e4870b75e014d1af514b1b71fa33134f57814"},
|
||||||
|
"mime": {:hex, :mime, "2.0.6", "8f18486773d9b15f95f4f4f1e39b710045fa1de891fada4516559967276e4dc2", [:mix], [], "hexpm", "c9945363a6b26d747389aac3643f8e0e09d30499a138ad64fe8fd1d13d9b153e"},
|
||||||
|
"nimble_parsec": {:hex, :nimble_parsec, "1.4.0", "51f9b613ea62cfa97b25ccc2c1b4216e81df970acd8e16e8d1bdc58fef21370d", [:mix], [], "hexpm", "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28"},
|
||||||
|
"nostrum": {:git, "https://github.com/Kraigie/nostrum.git", "1628880a3e6e45cacc53d2383eb110ff023050e1", []},
|
||||||
|
}
|
8
test/haha_yes_test.exs
Normal file
8
test/haha_yes_test.exs
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
defmodule HahaYesTest do
|
||||||
|
use ExUnit.Case
|
||||||
|
doctest HahaYes
|
||||||
|
|
||||||
|
test "greets the world" do
|
||||||
|
assert HahaYes.hello() == :world
|
||||||
|
end
|
||||||
|
end
|
1
test/test_helper.exs
Normal file
1
test/test_helper.exs
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ExUnit.start()
|
Loading…
Reference in a new issue