mirror of
https://github.com/bit1001/tdl.git
synced 2024-09-20 06:35:54 +08:00
feat(cmd): add chat ls
This commit is contained in:
parent
28c31ab9dc
commit
2aeb4afa29
52
app/chat/ls.go
Normal file
52
app/chat/ls.go
Normal file
|
@ -0,0 +1,52 @@
|
|||
package chat
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/gotd/contrib/middleware/floodwait"
|
||||
"github.com/gotd/contrib/middleware/ratelimit"
|
||||
"github.com/gotd/td/telegram/query"
|
||||
"github.com/iyear/tdl/app/internal/tgc"
|
||||
"github.com/iyear/tdl/pkg/consts"
|
||||
"github.com/iyear/tdl/pkg/kv"
|
||||
"github.com/iyear/tdl/pkg/utils"
|
||||
"golang.org/x/time/rate"
|
||||
"time"
|
||||
)
|
||||
|
||||
func List(ctx context.Context, ns, proxy string) error {
|
||||
kvd, err := kv.New(kv.Options{
|
||||
Path: consts.KVPath,
|
||||
NS: ns,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
c := tgc.New(proxy, kvd, false, floodwait.NewSimpleWaiter(), ratelimit.New(rate.Every(time.Millisecond*400), 2))
|
||||
|
||||
return c.Run(ctx, func(ctx context.Context) error {
|
||||
|
||||
dialogs, err := query.GetDialogs(c.API()).BatchSize(100).Collect(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
blocked, err := utils.Telegram.GetBlockedDialogs(ctx, c.API())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, dialog := range dialogs {
|
||||
id := utils.Telegram.GetInputPeerID(dialog.Peer)
|
||||
|
||||
if _, ok := blocked[id]; ok {
|
||||
continue
|
||||
}
|
||||
|
||||
fmt.Printf("ID: %d, Title: %s, Type: %s\n", id, utils.Telegram.GetPeerName(id, dialog.Entities), utils.Telegram.GetPeerType(id, dialog.Entities))
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
15
cmd/chat/chat.go
Normal file
15
cmd/chat/chat.go
Normal file
|
@ -0,0 +1,15 @@
|
|||
package chat
|
||||
|
||||
import (
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var Cmd = &cobra.Command{
|
||||
Use: "chat",
|
||||
Short: "A set of chat tools",
|
||||
Example: "",
|
||||
}
|
||||
|
||||
func init() {
|
||||
Cmd.AddCommand(cmdList)
|
||||
}
|
25
cmd/chat/ls.go
Normal file
25
cmd/chat/ls.go
Normal file
|
@ -0,0 +1,25 @@
|
|||
package chat
|
||||
|
||||
import (
|
||||
"github.com/iyear/tdl/app/chat"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var cmdList = &cobra.Command{
|
||||
Use: "ls",
|
||||
Short: "List your all chats with info",
|
||||
Example: "",
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
proxy, err := cmd.Flags().GetString("proxy")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ns, err := cmd.Flags().GetString("ns")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return chat.List(cmd.Context(), ns, proxy)
|
||||
},
|
||||
}
|
|
@ -4,6 +4,7 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
"github.com/fatih/color"
|
||||
"github.com/iyear/tdl/cmd/chat"
|
||||
"github.com/iyear/tdl/cmd/dl"
|
||||
"github.com/iyear/tdl/cmd/login"
|
||||
"github.com/iyear/tdl/cmd/version"
|
||||
|
@ -26,7 +27,7 @@ var cmd = &cobra.Command{
|
|||
}
|
||||
|
||||
func init() {
|
||||
cmd.AddCommand(version.Cmd, login.Cmd, dl.CmdDL)
|
||||
cmd.AddCommand(version.Cmd, login.Cmd, dl.CmdDL, chat.Cmd)
|
||||
cmd.PersistentFlags().String("proxy", "", "proxy address, only socks5 is supported, format: protocol://username:password@host:port")
|
||||
cmd.PersistentFlags().StringP("ns", "n", "", "namespace for Telegram session")
|
||||
|
||||
|
|
Loading…
Reference in a new issue