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

    @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 в цикле нужно не забыть
    Ответ написан
    Комментировать