@gopheR21

Как с помощью telegram-bot-api получить два значения?

Пишу бота на golang с помощью библиотеки - github.com/go-telegram-bot-api/telegram-bot-api
Так вот, от пользователя мне надо получить 2 и более значения как мне это сделать?
Вот так не получается https://play.golang.com/p/RnbOWMK4MJk
  • Вопрос задан
  • 166 просмотров
Решения вопроса 1
@iburanguloff
Fullstack web developer
В цикле for-range с использованием каналов при каждой итерации будет получаться только одно значение из канала. Чтобы получить несколько значений, нужно вручную производить присваивание их переменным, а цикл использовать другой, например обычный for. Примерно такой цикл результат должен вас устроить:
for {
		upd1 := <-updates
		upd2 := <-updates
		upd3 := <-updates
		
		...
		
		
		if upd1.Message != nil {
			command1 := upd1.Message.Text
			...
		}
		if upd2.Message != nil {
			command2 := upd2.Message.Text
			...
		}
	}


Здесь стоит обратить внимание на updN := <-updates - эта инструкция позволяет вручную вычитывать из канала данные.
Еще лучше использовать updN, ok := <-updates - в этом случае переменная ok будет принимать булево значение, которое будет равно false в случае закрытия канала. Рекомендую изучить go channels, чтобы это не вызывало затруднений, т.к. в языке Go это один из основоплагающих инструментов для работы с горутинами. Ну и break в цикле нужно не забыть
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы