Committer: root <root@fruw.org>
This commit is contained in:
21
golang/asciisay-bot/LICENSE
Normal file
21
golang/asciisay-bot/LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022 Mitch Conner
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
1
golang/asciisay-bot/Procfile
Normal file
1
golang/asciisay-bot/Procfile
Normal file
@ -0,0 +1 @@
|
||||
web: bin/asciisay-bot
|
48
golang/asciisay-bot/README.md
Normal file
48
golang/asciisay-bot/README.md
Normal file
@ -0,0 +1,48 @@
|
||||
### [t.me/asciisaybot](https://t.me/asciisaybot)
|
||||
```
|
||||
.__.__ ___. __
|
||||
_____ ______ ____ |__|__| ___________ ___.__. \_ |__ _____/ |_
|
||||
\__ \ / ___// ___\| | |/ ___/\__ \< | | ______ | __ \ / _ \ __\
|
||||
/ __ \_\___ \\ \___| | |\___ \ / __ \\___ | /_____/ | \_\ ( <_> ) |
|
||||
(____ /____ >\___ >__|__/____ >(____ / ____| |___ /\____/|__|
|
||||
\/ \/ \/ \/ \/\/ \/
|
||||
```
|
||||
Вариация cowsay, сделанная Телеграм-ботом. В арсенале 33 животных.<br />
|
||||
Животину можно выбрать самому, или же довериться случаю.<br />
|
||||
Сделано с помощью: [asciiart.eu](https://www.asciiart.eu/animals/) + [tbot](https://github.com/yanzay/tbot).
|
||||
### Случайное животное
|
||||
```
|
||||
user:
|
||||
Я люблю писать на го!
|
||||
|
||||
bot:
|
||||
< Я люблю писать на го! >
|
||||
\ /
|
||||
/ ___ _,.--.,_
|
||||
: .-~ ~--"~-. ._ "-.
|
||||
\ / ./_ Y "-. \
|
||||
: Y :~ ! Y
|
||||
/ l | / .|
|
||||
:_ \O O-, l / |j
|
||||
()\___) |/ \_/"; !
|
||||
\._____.-~\ . ~\. ./
|
||||
Y_ Y_. "vr"~ T
|
||||
( ( |L j
|
||||
[nn[nn..][nn..]
|
||||
```
|
||||
### C указанием животного
|
||||
```
|
||||
user:
|
||||
cat Если тебе было весело, то это не военное преступление.
|
||||
|
||||
bot:
|
||||
< Если тебе было весело, то это не военное преступление. >
|
||||
\ /
|
||||
: v v
|
||||
\ |\---/|
|
||||
( o_o )
|
||||
\_W__/-..----.
|
||||
___/ ' ' ,""+\
|
||||
(__...' __\ |'.___.';
|
||||
(_,...-'''(_,.'__)/'.....+
|
||||
```
|
10
golang/asciisay-bot/go.mod
Normal file
10
golang/asciisay-bot/go.mod
Normal file
@ -0,0 +1,10 @@
|
||||
module github.com/fruworg/asciisay-bot
|
||||
|
||||
// +heroku goVersion go1.17
|
||||
go 1.17
|
||||
|
||||
require (
|
||||
github.com/joho/godotenv v1.3.0
|
||||
github.com/yanzay/tbot/v2 v2.0.1
|
||||
github.com/yanzay/tbot v1.0.0 // indirect
|
||||
)
|
13
golang/asciisay-bot/go.sum
Normal file
13
golang/asciisay-bot/go.sum
Normal file
@ -0,0 +1,13 @@
|
||||
|
||||
github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
|
||||
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
|
||||
github.com/yanzay/tbot v1.0.0 h1:pKLHIvdiHRgU5iTfpWlgMTCWyD4vIQtAsOy7LCYMsAo=
|
||||
github.com/yanzay/tbot v1.0.0/go.mod h1:rS36e4e2P56jkI0bUuZtzjBBIwMIdBBTUHfI4tgG5BM=
|
||||
github.com/yanzay/tbot/v2 v2.0.1 h1:d/Ecve1XiJqZeEnmA45E3jdQxuXhlZVk7DmdNtNJITg=
|
||||
github.com/yanzay/tbot/v2 v2.0.1/go.mod h1:q0+8JblBq9tLAnKHdBIZsHwDvMS9TfO6mNfaAk1VrHg=
|
||||
github.com/yanzay/log v0.0.0-20160419144809-87352bb23506 h1:RPrQRi67MUoUPg/3wwL9K9vKVWAB180e2WJgxC02CJE=
|
||||
github.com/yanzay/log v0.0.0-20160419144809-87352bb23506/go.mod h1:x2hAcqPbZzQz79Fzr9xEe7BM73+UsZ3nBucx2u30oSk=
|
||||
github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible h1:2cauKuaELYAEARXRkq2LrJ0yDDv1rW7+wrTEdVL3uaU=
|
||||
github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM=
|
||||
github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c=
|
||||
github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
|
283
golang/asciisay-bot/handlers.go
Normal file
283
golang/asciisay-bot/handlers.go
Normal file
@ -0,0 +1,283 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/yanzay/tbot/v2"
|
||||
)
|
||||
|
||||
var fruw = map[string]string{
|
||||
"cow": `
|
||||
\ /
|
||||
: ^__^
|
||||
\ (oo)\_______
|
||||
(__)\ )\/\
|
||||
||----w |
|
||||
|| ||
|
||||
`, //pig by jv
|
||||
"pig": `
|
||||
\ /
|
||||
: <'--'\>______
|
||||
\ /. . '' \
|
||||
('') , @
|
||||
'-._, /
|
||||
)-)_/--( >
|
||||
'''' ''''
|
||||
`, //cat by sk
|
||||
"cat": `
|
||||
\ /
|
||||
: v v
|
||||
\ |\---/|
|
||||
( o_o )
|
||||
\_W__/-..----.
|
||||
___/ ' ' ,""+\
|
||||
(__...' __\ |'.___.';
|
||||
(_,...-'''(_,.'__)/'.....+
|
||||
`, //aardvarks
|
||||
"aardvarks": `
|
||||
\ /
|
||||
: _.---._ /\\
|
||||
\ ./' "--'\//
|
||||
./ o \
|
||||
/./\ )______ \__ \
|
||||
./ / /\ \ | \ \ \ \
|
||||
/ / \ \ | |\ \ \7
|
||||
" " " "
|
||||
`, //bat by jgs
|
||||
"bat": `
|
||||
\ /
|
||||
\ _
|
||||
/\ \ /\
|
||||
/ \'._ (\_/) _.'/ \
|
||||
|.''._'--(o.o)--'_.''.|
|
||||
\_ / ';=/ " \=;' \ _/
|
||||
'\__| \___/ |__/'
|
||||
\(_|_)/
|
||||
" ' "
|
||||
`, //beer
|
||||
"bear": `
|
||||
\ /
|
||||
__ __
|
||||
/ \.-"""-./ \
|
||||
\ - - /
|
||||
| o o |
|
||||
\ .-'''-. /
|
||||
'-\__Y__/-'
|
||||
'---'
|
||||
`, //beaver by jgs
|
||||
"beaver": `
|
||||
\ /
|
||||
\
|
||||
: .=" "=._.---.
|
||||
\ ." c 6 Y 6'p
|
||||
: / , '. w_/
|
||||
\ : '-. / /
|
||||
_,..._/ )_-\ \_=.\
|
||||
'-....-''------)))'=-'"''"
|
||||
`, //bison by cp97
|
||||
"bison": `
|
||||
\ /
|
||||
:
|
||||
((_,...,_))
|
||||
|o o|
|
||||
\ /
|
||||
^_^
|
||||
|
||||
`, //cock by sk
|
||||
"cock": `
|
||||
\ /
|
||||
\ /""\ ,
|
||||
< ^ L____/|
|
||||
#) /' , /
|
||||
\ '---' /
|
||||
''";\)'
|
||||
_/_Y
|
||||
`, //duck buy hjw
|
||||
"duck": `
|
||||
\ / __
|
||||
<(o )___
|
||||
( ._> /
|
||||
'---'
|
||||
`, //camel by jgs
|
||||
"camel": `
|
||||
\ /
|
||||
: _
|
||||
\ .--' |
|
||||
/___^ | .--.
|
||||
) | / \
|
||||
/ | /' '.
|
||||
| '-' / \
|
||||
\ | |\
|
||||
\ / \ /\|
|
||||
\ /'----'\ / "
|
||||
||| \\ |
|
||||
((| ((|
|
||||
||| |||
|
||||
//_( //_(
|
||||
`, //deer
|
||||
"deer": `
|
||||
\ /
|
||||
: )) ((
|
||||
\ // \\
|
||||
: \\____//\
|
||||
\ ~/~ ~\/~
|
||||
( o/ _/o ~
|
||||
/ / ,|
|
||||
(~~~)__.-\ |
|
||||
\'~~ | |
|
||||
| | |
|
||||
`, //dog
|
||||
"dog": `
|
||||
\ /
|
||||
\ |\_/| _
|
||||
: @ @ | ((| |))
|
||||
\ <> | | |
|
||||
/\_ \------____| |
|
||||
| |
|
||||
____|_ ___| /
|
||||
/_/_____/____/_______|
|
||||
`, //dolphin by Morfina
|
||||
"dolphin": `
|
||||
\ /
|
||||
: ,-.
|
||||
\ / ( '
|
||||
_.--'! '--._
|
||||
,' ''.
|
||||
* : \
|
||||
_.' O ___ ! '
|
||||
(_.-^, __..-' ''''--. |
|
||||
/,' ' _.' /
|
||||
* .-'' |
|
||||
(..--^. '
|
||||
| /
|
||||
'
|
||||
`, //elephant by Row
|
||||
"elephant": `
|
||||
\ /
|
||||
/ ___ _,.--.,_
|
||||
: .-~ ~--"~-. ._ "-.
|
||||
\ / ./_ Y "-. \
|
||||
: Y :~ ! Y
|
||||
/ l | / .|
|
||||
:_ \O O-, l / |j
|
||||
()\___) |/ \_/"; !
|
||||
\._____.-~\ . ~\. ./
|
||||
Y_ Y_. "vr"~ T
|
||||
( ( |L j
|
||||
[nn[nn..][nn..]
|
||||
`, //fish
|
||||
"fish": `
|
||||
\ /
|
||||
\ /'·.¸
|
||||
: /¸...¸':·
|
||||
\ ¸.·' ¸ '·.¸.·')
|
||||
: © ):'; ¸ {
|
||||
'·.¸ '· ¸.·'\'·¸)
|
||||
'\\''\¸.·'
|
||||
`, //whale by Riitta Rasimus
|
||||
"whale": `
|
||||
\ /
|
||||
:
|
||||
\
|
||||
:
|
||||
\
|
||||
__:_____ |"\/"|
|
||||
,' '. \ /
|
||||
| O \___/ |
|
||||
~^~^~^~^~^~^~^~^~^~^~^~^~
|
||||
`, //shark by Shanaka Dias
|
||||
"shark": `
|
||||
\ /
|
||||
:
|
||||
\
|
||||
_________ . .
|
||||
(.. \_ , |\ /|
|
||||
\ O \ /| \ \/ /
|
||||
\______ \/ | \ /
|
||||
vvvv\ \ | / |
|
||||
\^^^^ == \_/ |
|
||||
'\_ === \. |
|
||||
/ /\_ \ / |
|
||||
|/ \_ \| /
|
||||
\________/
|
||||
`, //seahorse by Morfina
|
||||
"seahorse": `
|
||||
\ /
|
||||
:
|
||||
\
|
||||
:
|
||||
\
|
||||
:
|
||||
\/)/)
|
||||
_' oo(_.-.
|
||||
/'. .---'
|
||||
/'-./ (
|
||||
) ; __\
|
||||
\_.'\ : __|
|
||||
) _/
|
||||
( (,.
|
||||
'-.-'
|
||||
`}
|
||||
|
||||
var rndmap = map[int]string{
|
||||
0: "cow",
|
||||
1: "pig",
|
||||
2: "cat",
|
||||
3: "bat",
|
||||
4: "bear",
|
||||
5: "bison",
|
||||
6: "cock",
|
||||
7: "duck",
|
||||
8: "camel",
|
||||
9: "deer",
|
||||
10: "dog",
|
||||
11: "dolphin",
|
||||
12: "elephant",
|
||||
13: "fish",
|
||||
14: "whale",
|
||||
15: "shark",
|
||||
16: "seahorse",
|
||||
17: "aardvarks",
|
||||
18: "beaver",
|
||||
}
|
||||
|
||||
var lenmap = len(rndmap)
|
||||
|
||||
// Handle the /start command here
|
||||
func (a *application) startHandler(m *tbot.Message) {
|
||||
org := ""
|
||||
for i := 0; i < lenmap; i++ {
|
||||
org = fmt.Sprintf("%s*%s*", org, rndmap[i])
|
||||
if i < lenmap-1 {
|
||||
org = org + ", "
|
||||
}
|
||||
}
|
||||
msg := fmt.Sprintf("\n*Привет!* Присылай сообщение и я его преобразую.\n"+
|
||||
"\nСо случайным животным:\nЕсли тебе было весело, то это не военное преступление.\n"+
|
||||
"\nС указанием животного:\n*cat* Если тебе было весело, то это не военное преступление.\n"+
|
||||
"\nВместо *cat* можно подставить любое другое животное.\nТолько не забудь про пробел, десу.\n"+
|
||||
"\nЖивотные: %s.\n"+
|
||||
"\n*Пример ответа:*\n"+"```\n< Если тебе было весело, то это не военное преступление. >%s```", org, fruw["cat"])
|
||||
a.client.SendMessage(m.Chat.ID, msg, tbot.OptParseModeMarkdown)
|
||||
}
|
||||
|
||||
// Handle the msg command here
|
||||
func (a *application) msgHandler(m *tbot.Message) {
|
||||
msg := ""
|
||||
arr := strings.Split(m.Text, " ")
|
||||
animal := strings.ToLower(arr[0])
|
||||
if fruw[animal] != "" && len(arr) > 1 {
|
||||
reply := fruw[animal]
|
||||
text := strings.TrimPrefix(m.Text, arr[0]+" ")
|
||||
msg = fmt.Sprintf("```\n< %s > %s ```", text, reply)
|
||||
} else {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
rnd := (rand.Intn(lenmap))
|
||||
reply := fruw[rndmap[rnd]]
|
||||
msg = fmt.Sprintf("```\n< %s > %s ```", m.Text, reply)
|
||||
}
|
||||
a.client.SendMessage(m.Chat.ID, msg, tbot.OptParseModeMarkdown)
|
||||
}
|
35
golang/asciisay-bot/main.go
Normal file
35
golang/asciisay-bot/main.go
Normal file
@ -0,0 +1,35 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
|
||||
"github.com/joho/godotenv"
|
||||
"github.com/yanzay/tbot/v2"
|
||||
)
|
||||
|
||||
type application struct {
|
||||
client *tbot.Client
|
||||
}
|
||||
|
||||
var (
|
||||
app application
|
||||
bot *tbot.Server
|
||||
token string
|
||||
)
|
||||
|
||||
func init() {
|
||||
e := godotenv.Load()
|
||||
if e != nil {
|
||||
log.Println(e)
|
||||
}
|
||||
token = os.Getenv("TELEGRAM_TOKEN")
|
||||
}
|
||||
|
||||
func main() {
|
||||
bot = tbot.New(token, tbot.WithWebhook("https://asciisay-bot.herokuapp.com", ":"+os.Getenv("PORT")))
|
||||
app.client = bot.Client()
|
||||
bot.HandleMessage("/start", app.startHandler)
|
||||
bot.HandleMessage(".+", app.msgHandler)
|
||||
log.Fatal(bot.Start())
|
||||
}
|
Reference in New Issue
Block a user