Archived
0

Начальный коммит

This commit is contained in:
eleksir
2021-07-25 12:08:40 +03:00
commit 000a780cb1
8 changed files with 274 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
.idea/**
galichbot.ini
galichbot

21
LICENSE.txt Normal file
View 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
View 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
View File

@@ -0,0 +1,2 @@
BotApiKey = Ключ_который_выдаёт_BotFather_при_регистрации_бота
VictimID = Циферный_telegram_id_жертвы

9
go.mod Normal file
View 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
View 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
View 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
View File

@@ -0,0 +1,122 @@
если хочешь, считай ответом 🤓
дочитывать я всё равно не буду.
--
ну и пошли вы нахуй
--
какую же хуйню несёшь, даже не дочитал
--
шульман спроси
--
может у тебя и сейчас хуй во рту 🤷‍♀
--
хуй будешь? а я не предложу 😂
--
это ты Андрея бейтишь такой толстотой? 😏
--
угадайки дебила часть очередная 🙂
--
шульман главное доверяй 🤣
--
то недоступно связанным 🤷‍♀
--
два варианта: инфантильная безответственность и безответственный инфантилизм 😇
--
дебил пытается в угадайки играть 😀
--
долбоёб не думает
у него рефлексы
--
Сергей Галиченко
убирает за мышами говно
--
охуительные истории от знотаков
--
на каждом ответственность
--
типичная суета дебила 🌚
--
куар-код нужен чтобы набить тебе ДОЛБОЁБ 🌚
можно молотком
--
не переживай, тебя не выебу
--
признал что целка жопная
молодец, отрабатывает сберегая для любимого 😏
шульмана наверное 😂
--
ну не может такое быть обманом же 😀
--
немножечко обосрался борец, но с кем не бывает 😀
--
с мудаками не аргументируют 🙂
--
ты мудак, вот и вся причина
--
как есть 🤷‍♀ ты говноед
--
опять мозг украли
--
НЕ НАСОСАЛ А ПОДАРИЛИ
--
ебать ты конджурер
--
ебанат о критическом мышлении 😂
--
новые шедевры ебанины 👀
--
чтд, административка
--
натужно жидким, если угодно
--
ну вот ты насрал себе на лицо
и? 🤔
--
ебанутый возмутился. иди химтрейлы нюхай
--
ну и? хуле ты это постишь
--
твоя оценка будет
но от ебанутого, срущего себе на голову
меня не очень тронет 🙂
--
ты мудак 🤷‍♀
--
ты эм полностью уважение моё потерял 🤷‍♀
напомню
ты мудак, мать твоя дура
а уж как ты себе на голову срёшь, оно не очень важно. некуда там аргументы
--
да уж, поссать в глаза проще
и уместнее
--
санитаров попроси, может выдадут тебе от очень надо таблеточек 😁
но, думаю, продолжишь пиздеть как тебя угнетают
--
вот, опять визги 😏
--
потоки ебанины от мудака 😌
--
ты мудак, мать твоя дура
--
ты в отказе, и мир виноват
--
мамкой размахивая 😇
--
могу тебя послать
в ебало плюнуть не могу, далеко 😇
--
пиздёж
--