Начальный коммит
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
.idea/**
|
||||||
|
galichbot.ini
|
||||||
|
galichbot
|
||||||
21
LICENSE.txt
Normal file
21
LICENSE.txt
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2021 Sergei Fedosoff <eleksir@gmail.com>
|
||||||
|
|
||||||
|
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.
|
||||||
33
README
Normal file
33
README
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
Галичбот
|
||||||
|
|
||||||
|
Что это и зачем это нужно?
|
||||||
|
------------------------------------------------------------------------------------------------------------------------
|
||||||
|
Это Telegram bot, названный в честь Сергея Галиченко, довольно "токсичного" персонажа.
|
||||||
|
Чтобы позлить Галича, конечно же и развлечь народ.
|
||||||
|
|
||||||
|
|
||||||
|
Как это собрать и запустить?
|
||||||
|
------------------------------------------------------------------------------------------------------------------------
|
||||||
|
* Собирается бот путём запуска компилятора go в каталоге с проектом, вот так:
|
||||||
|
$ go build .
|
||||||
|
Для сборки понадобятся интернеты и компилятор go версии 1.16.5. Собиралось и тестировалось всё на нём.
|
||||||
|
|
||||||
|
Чтобы запустить бота понадобится:
|
||||||
|
* Файлик galichbot.ini, в котором нужно всего 2 значения telegram id пользователя и
|
||||||
|
ключ бота, который можно получить у BotFather в Телеграме.
|
||||||
|
* А ещё нужен файлик phrases.txt, в котором через разделитель "--" (без кавычек) будут перечислены фразы, которыми бот
|
||||||
|
будет отвечать на любое сообщение пользователя-жертвы.
|
||||||
|
* Устойчивое соединение с интернетами.
|
||||||
|
Запускаем бинарь, приглашаем бота в чат и вуаля.
|
||||||
|
|
||||||
|
|
||||||
|
Э, а где каталог vendor?
|
||||||
|
------------------------------------------------------------------------------------------------------------------------
|
||||||
|
Ишь чего захотел! Это не production-ready проект, скорее, проба пера. Он не предназначен работать 24/7 режиме. Так что
|
||||||
|
сорян, никакого серьёзного подхода к ведению исходников.
|
||||||
|
|
||||||
|
|
||||||
|
Ну и кому надо сказать "спасибо"?
|
||||||
|
------------------------------------------------------------------------------------------------------------------------
|
||||||
|
Сергею Галиченко, лично. (Да, завалите его своими "спасибо" :)
|
||||||
|
Чатику бывших и действующих сотрудников АТК.
|
||||||
2
galichbot_sample.ini
Normal file
2
galichbot_sample.ini
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
BotApiKey = Ключ_который_выдаёт_BotFather_при_регистрации_бота
|
||||||
|
VictimID = Циферный_telegram_id_жертвы
|
||||||
9
go.mod
Normal file
9
go.mod
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
module galichbot
|
||||||
|
|
||||||
|
go 1.16
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/onrik/micha v1.2.1
|
||||||
|
github.com/smartystreets/goconvey v1.6.4 // indirect
|
||||||
|
gopkg.in/ini.v1 v1.62.0
|
||||||
|
)
|
||||||
29
go.sum
Normal file
29
go.sum
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
|
||||||
|
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||||
|
github.com/jarcoal/httpmock v1.0.8 h1:8kI16SoO6LQKgPE7PvQuV+YuD/inwHd7fOOe2zMbo4k=
|
||||||
|
github.com/jarcoal/httpmock v1.0.8/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik=
|
||||||
|
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
|
||||||
|
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||||
|
github.com/onrik/micha v1.2.1 h1:Tp42BFmiDcs74r4MOmTFTIATIgg2HfWISqhD0QffnyY=
|
||||||
|
github.com/onrik/micha v1.2.1/go.mod h1:QnHeeqsE7eLYHalyyGkBy+KCe69xK8BIAaB9lCoXjKk=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
|
||||||
|
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||||
|
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
|
||||||
|
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||||
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
|
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU=
|
||||||
|
gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
55
main.go
Normal file
55
main.go
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io/ioutil"
|
||||||
|
"log"
|
||||||
|
"math/rand"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/onrik/micha"
|
||||||
|
"gopkg.in/ini.v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
cfg, err := ini.Load("galichbot.ini")
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
token := cfg.Section("").Key("BotApiKey").String()
|
||||||
|
victim, err := cfg.Section("").Key("VictimID").Int64()
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
fileName := "phrases.txt"
|
||||||
|
fileBytes, err := ioutil.ReadFile(fileName)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
speeches := strings.Split(string(fileBytes), "--")
|
||||||
|
bot, err := micha.NewBot(token)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
go bot.Start()
|
||||||
|
rand.Seed(time.Now().Unix())
|
||||||
|
|
||||||
|
for update := range bot.Updates() {
|
||||||
|
if update.Message != nil {
|
||||||
|
if update.Message.From.ID == victim {
|
||||||
|
n := rand.Int() % len(speeches)
|
||||||
|
var options = micha.SendMessageOptions{ReplyToMessageID: update.Message.MessageID}
|
||||||
|
_, _ = bot.SendMessage(update.Message.Chat.ID, speeches[n], &options)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
122
phrases.txt
Normal file
122
phrases.txt
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
если хочешь, считай ответом 🤓
|
||||||
|
|
||||||
|
дочитывать я всё равно не буду.
|
||||||
|
--
|
||||||
|
ну и пошли вы нахуй
|
||||||
|
--
|
||||||
|
какую же хуйню несёшь, даже не дочитал
|
||||||
|
--
|
||||||
|
шульман спроси
|
||||||
|
--
|
||||||
|
может у тебя и сейчас хуй во рту 🤷♀
|
||||||
|
--
|
||||||
|
хуй будешь? а я не предложу 😂
|
||||||
|
--
|
||||||
|
это ты Андрея бейтишь такой толстотой? 😏
|
||||||
|
--
|
||||||
|
угадайки дебила часть очередная 🙂
|
||||||
|
--
|
||||||
|
шульман главное доверяй 🤣
|
||||||
|
--
|
||||||
|
то недоступно связанным 🤷♀
|
||||||
|
--
|
||||||
|
два варианта: инфантильная безответственность и безответственный инфантилизм 😇
|
||||||
|
--
|
||||||
|
дебил пытается в угадайки играть 😀
|
||||||
|
--
|
||||||
|
долбоёб не думает
|
||||||
|
|
||||||
|
у него рефлексы
|
||||||
|
--
|
||||||
|
Сергей Галиченко
|
||||||
|
убирает за мышами говно
|
||||||
|
--
|
||||||
|
охуительные истории от знотаков
|
||||||
|
--
|
||||||
|
на каждом ответственность
|
||||||
|
--
|
||||||
|
типичная суета дебила 🌚
|
||||||
|
--
|
||||||
|
куар-код нужен чтобы набить тебе ДОЛБОЁБ 🌚
|
||||||
|
|
||||||
|
можно молотком
|
||||||
|
--
|
||||||
|
не переживай, тебя не выебу
|
||||||
|
--
|
||||||
|
признал что целка жопная
|
||||||
|
|
||||||
|
молодец, отрабатывает сберегая для любимого 😏
|
||||||
|
шульмана наверное 😂
|
||||||
|
--
|
||||||
|
ну не может такое быть обманом же 😀
|
||||||
|
--
|
||||||
|
немножечко обосрался борец, но с кем не бывает 😀
|
||||||
|
--
|
||||||
|
с мудаками не аргументируют 🙂
|
||||||
|
--
|
||||||
|
ты мудак, вот и вся причина
|
||||||
|
--
|
||||||
|
как есть 🤷♀ ты говноед
|
||||||
|
--
|
||||||
|
опять мозг украли
|
||||||
|
--
|
||||||
|
НЕ НАСОСАЛ А ПОДАРИЛИ
|
||||||
|
--
|
||||||
|
ебать ты конджурер
|
||||||
|
--
|
||||||
|
ебанат о критическом мышлении 😂
|
||||||
|
--
|
||||||
|
новые шедевры ебанины 👀
|
||||||
|
--
|
||||||
|
чтд, административка
|
||||||
|
--
|
||||||
|
натужно жидким, если угодно
|
||||||
|
--
|
||||||
|
ну вот ты насрал себе на лицо
|
||||||
|
|
||||||
|
и? 🤔
|
||||||
|
--
|
||||||
|
ебанутый возмутился. иди химтрейлы нюхай
|
||||||
|
--
|
||||||
|
ну и? хуле ты это постишь
|
||||||
|
--
|
||||||
|
твоя оценка будет
|
||||||
|
|
||||||
|
но от ебанутого, срущего себе на голову
|
||||||
|
|
||||||
|
меня не очень тронет 🙂
|
||||||
|
--
|
||||||
|
ты мудак 🤷♀
|
||||||
|
--
|
||||||
|
ты эм полностью уважение моё потерял 🤷♀
|
||||||
|
|
||||||
|
напомню
|
||||||
|
|
||||||
|
ты мудак, мать твоя дура
|
||||||
|
|
||||||
|
а уж как ты себе на голову срёшь, оно не очень важно. некуда там аргументы
|
||||||
|
--
|
||||||
|
да уж, поссать в глаза проще
|
||||||
|
|
||||||
|
и уместнее
|
||||||
|
--
|
||||||
|
санитаров попроси, может выдадут тебе от очень надо таблеточек 😁
|
||||||
|
|
||||||
|
но, думаю, продолжишь пиздеть как тебя угнетают
|
||||||
|
--
|
||||||
|
вот, опять визги 😏
|
||||||
|
--
|
||||||
|
потоки ебанины от мудака 😌
|
||||||
|
--
|
||||||
|
ты мудак, мать твоя дура
|
||||||
|
--
|
||||||
|
ты в отказе, и мир виноват
|
||||||
|
--
|
||||||
|
мамкой размахивая 😇
|
||||||
|
--
|
||||||
|
могу тебя послать
|
||||||
|
|
||||||
|
в ебало плюнуть не могу, далеко 😇
|
||||||
|
--
|
||||||
|
пиздёж
|
||||||
|
--
|
||||||
Reference in New Issue
Block a user