Early telegram integrations

This commit is contained in:
2022-09-14 22:54:51 +08:00
parent 534bc70f0f
commit 9b48f2ee50
8 changed files with 65 additions and 29 deletions

View File

@@ -37,7 +37,11 @@ func ( result QueryResult ) Message() string {
sb.WriteString( "\n" )
for _, bus := range buses.Buses {
sb.WriteString( " * " )
sb.WriteString( bus.ETAText )
if bus.ETAText == "" {
sb.WriteString( bus.ETDText )
} else {
sb.WriteString( bus.ETAText )
}
sb.WriteString( "\n" )
}

View File

@@ -10,6 +10,7 @@ import (
type queryObj struct {
Route string
BusStops *[]BusStop
Search string
}
type qTerm struct {
@@ -25,6 +26,11 @@ func Query( lang string, message string ) *QueryResult {
}
if qo.Route != "" {
if len( *qo.BusStops ) == 0 {
return &QueryResult{ Error: errors.New( "Result not found" ) }
}
schedules, err := getSchedule( lang, qo.Route )
if err != nil {
return &QueryResult{ Error: err }
@@ -54,9 +60,9 @@ func Query( lang string, message string ) *QueryResult {
func test( entry BusStop, val string ) bool {
switch true {
case strings.Contains( (*entry.Name)["zh"], val ):
case strings.Contains( strings.ToUpper( (*entry.Name)["zh"] ), val ):
fallthrough
case strings.Contains( (*entry.Name)["en"], val ):
case strings.Contains( strings.ToUpper( (*entry.Name)["en"] ), val ):
return true
}
return false
@@ -109,21 +115,24 @@ func parse( line string ) ( *queryObj, error ) {
// If route found, filter out all other route
// then search within that route
if route != "" && 0 < len( searches ) {
matches_in := []BusStop{}
for _, entry := range matches {
if entry.RouteId != route {
continue
}
if route != "" {
if 0 < len( searches ) {
matches_in := []BusStop{}
for _, entry := range matches {
if entry.RouteId != route {
continue
}
for _, val := range searches {
if test( entry, val ) {
matches_in = append( matches_in, entry )
break
for _, val := range searches {
if test( entry, val ) {
matches_in = append( matches_in, entry )
break
}
}
}
matches = matches_in
} else {
}
matches = matches_in
}
return &queryObj{ Route: route, BusStops: &matches }, err