• Как на GO спарсить инфу с сайта и найти определенную фразу?

    dasha_programmist
    @dasha_programmist
    ex Software Engineer at Reddit TS/React/GraphQL/Go
    вот либа огонь, то что надо
    https://github.com/PuerkitoBio/goquery
    Ответ написан
    Комментировать
  • Где найти хороший исходник интернет кошелька на андроид?

    @rPman
    Не существует, потому что банки и платежки хотят все держать при себе и наружу доступа никому не давать.
    Плюс физикам вообще неположено финансами рулить, а вы думали криптовалюты просто ради прикола появились? потому что банки совсем ох..ли!

    p.s. у сбербанка есть услуга - мобильный банк, где с помощью некого птичьего языка в простых sms можно делать много вкусного, комунальные и не очень платежи, переводы, запрос баланса и прочее. Т.е. вы можете написать простейшее приложение, которое по sms на 900 номер будет управлять вашим счетом так как вам удобно.
    Ответ написан
    Комментировать
  • Где найти хороший исходник интернет кошелька на андроид?

    @CHolfield
    На поле чудес в стране дураков находится то, что вы ищете. Копирайты поправить и в путь.
    Ответ написан
    2 комментария
  • Как сделать бэкграунд как на сайте дискорда?

    @litash
    Привет, можешь ознакомится с matthew.wagerfield.com/parallax в своё время очень выручил :) Он не сложен усвоении. Легко настраивается. Частицы делаешь сам и стилизуешь их в css, можешь и дополнительную анимацию для частиц в том же css и написать. А движение когда водишь мышкой - уже поможет плагин.
    Ответ написан
    1 комментарий
  • Как в golang с помощью tgbotapi переслать отправителю его же сообщение?

    @ghostiam
    На Go писатель, серверов пинатель.
    Старый ответ

    как и с сообщениями, у созданных объектов есть свойство ReplyToMessageID в которое нужно записать ID сообщения из update.Message.MessageID
    audioUpload := tgbotapi.NewAudioUpload(update.Message.Chat.ID, ...)
    audioUpload.ReplyMarkup = update.Message.MessageID
    _, err := bot.Send(audioUpload)


    Если возникает вопрос, как вообще отправить файл, то нужно передать структуру tgbotapi.FileBytes или tgbotapi.FileReader вторым параметром в функцию и заполнить её.
    Для примера, отправляем файл с диска:
    file, err := os.Open("audio.mp3")
    		if err != nil {
    			panic(err)
    		}
    		defer file.Close()
    
    		audioUpload := tgbotapi.NewAudioUpload(update.Message.Chat.ID, tgbotapi.FileReader{
    			Name:   "audio.mp3",
    			Reader: file,
    			Size:   -1, // If Size is -1, it will read the entire Reader into memory to calculate a Size.
    		})
    		audioUpload.ReplyToMessageID = update.Message.MessageID
    		_, err := bot.Send(audioUpload)
    		if err != nil {
    			panic(err)
    		}



    UPD: После общения в ЛС, оказалось, что вопрос заключался в создании Echo бота, который мог бы пересылать не только текст, но и картинки, аудио и прочее.

    В данном примере реализована отправка только текста и картинок. Чтобы добавить обработку других типов сообщений, нужно добавить новый `case` в `switch` в функции `OnMessage`:
    Код
    package main
    
    import (
    	"log"
    
    	"github.com/davecgh/go-spew/spew"
    	"github.com/go-telegram-bot-api/telegram-bot-api"
    )
    
    func main() {
    	// подключаемся к боту с помощью токена
    	bot, err := tgbotapi.NewBotAPI("ТОКЕН")
    	if err != nil {
    		log.Panic(err)
    	}
    
    	bot.Debug = true
    	log.Printf("Authorized on account %s", bot.Self.UserName)
    
    	// инициализируем канал, куда будут прилетать обновления от API
    	u := tgbotapi.NewUpdate(0)
    	u.Timeout = 60
    
    	updates, err := bot.GetUpdatesChan(u)
    	if err != nil {
    		log.Fatal(err)
    	}
    
    	// читаем обновления из канала
    	for update := range updates {
    		switch {
    		case update.Message != nil: // Если было прислано сообщение, то обрабатываем, так как могут приходить не только сообщения.
    			OnMessage(bot, update.Message)
    		}
    	}
    }
    
    func OnMessage(bot *tgbotapi.BotAPI, message *tgbotapi.Message) {
    	// Пользователь, который написал боту
    	userName := message.From.UserName
    
    	// ID чата/диалога.
    	// Может быть идентификатором как чата с пользователем
    	// (тогда он равен UserID) так и публичного чата/канала
    	chatID := message.Chat.ID
    
    	log.Printf("[%s] %d", userName, chatID)
    
    	spew.Dump(message) // выводим то что пришло (Для отладки!!!)
    
    	var msg tgbotapi.Chattable
    	switch {
    	case message.Text != "": // Текстовое ли сообщение?
    		msg = tgbotapi.NewMessage(chatID, message.Text)
    
    	case message.Photo != nil: // Это фото?
    		photoArray := *message.Photo
    		photoLastIndex := len(photoArray) - 1
    		photo := photoArray[photoLastIndex] // Получаем последний элемент массива (самую большую картинку)
    		msg = tgbotapi.NewPhotoShare(chatID, photo.FileID)
    
    	default:                                                 // Если не одно условие не сработало
    		msg = tgbotapi.NewMessage(chatID, "Не реализовано") // Отправляется на тот тип сообщения, который ещё не реализован выше ^
    	}
    
    	// и отправляем его
    	_, err := bot.Send(msg)
    	if err != nil {
    		log.Println(err)
    	}
    }
    Ответ написан
    3 комментария
  • Как в switch сделать страницу ошибки?

    NightmareZz
    @NightmareZz
    Нищий разработчик из Симферополя
    if ($page !== 'start' && $page !== 'default') {
        header('Location: /error.php');
        die();
    }
    Ответ написан
    4 комментария
  • Как автоматизировать процесс на php?

    @trofimovdev
    Python
    В вашем случае либо учить PHP и что-то делать самому, либо устанавливать CMS, например Wordpress (тоже, кстати, на пхп написана) и в процессе изучать основы php, "натягивания" и др.
    Второе предпочтительнее.
    Ответ написан
    Комментировать