Начальный коммит
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