Created
July 25, 2023 06:07
-
-
Save sleroq/7b0ef3957d50e67c4c1e7cb3e20c2418 to your computer and use it in GitHub Desktop.
Example broken telegram bot.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package main | |
| import ( | |
| "fmt" | |
| "github.com/go-faster/errors" | |
| "github.com/gotd/td/telegram/message" | |
| "github.com/gotd/td/telegram/message/html" | |
| "github.com/gotd/td/telegram/uploader" | |
| "log" | |
| "os" | |
| "github.com/anonyindian/gotgproto" | |
| "github.com/anonyindian/gotgproto/dispatcher/handlers" | |
| "github.com/anonyindian/gotgproto/dispatcher/handlers/filters" | |
| "github.com/anonyindian/gotgproto/ext" | |
| "github.com/anonyindian/gotgproto/sessionMaker" | |
| "github.com/gotd/td/tg" | |
| ) | |
| func main() { | |
| // Type of client to login to, can be of 2 types: | |
| // 1.) Bot (Fill BotToken in this case) | |
| // 2.) User (Fill Phone in this case) | |
| clientType := gotgproto.ClientType{ | |
| BotToken: "BOT_TOKEN_HERE", | |
| } | |
| client, err := gotgproto.NewClient( | |
| // Get AppID from https://my.telegram.org/apps | |
| 123456, | |
| // Get ApiHash from https://my.telegram.org/apps | |
| "API_HASH_HERE", | |
| // ClientType, as we defined above | |
| clientType, | |
| // Optional parameters of client | |
| &gotgproto.ClientOpts{ | |
| Session: sessionMaker.NewSession("echobot", sessionMaker.Session), | |
| }, | |
| ) | |
| if err != nil { | |
| log.Fatalln("failed to start client:", err) | |
| } | |
| dispatcher := client.Dispatcher | |
| // Command Handler for /file | |
| dispatcher.AddHandler(handlers.NewCommand("file", file)) | |
| // This Message Handler will call our echo function on new messages | |
| dispatcher.AddHandlerToGroup(handlers.NewMessage(filters.Message.Text, echo), 1) | |
| fmt.Printf("client (@%s) has been started...\n", client.Self.Username) | |
| client.Idle() | |
| } | |
| func echo(ctx *ext.Context, update *ext.Update) error { | |
| _, err := ctx.Reply(update, update.EffectiveMessage.Message.Message, nil) | |
| return err | |
| } | |
| func file(ctx *ext.Context, _ *ext.Update) error { | |
| picture, err := os.ReadFile("picture.png") | |
| if err != nil { | |
| return errors.Wrap(err, "opening file") | |
| } | |
| upldr := uploader.NewUploader(ctx.Raw) | |
| sender := message.NewSender(ctx.Raw).WithUploader(upldr) | |
| file, err := upldr.FromBytes(ctx, fmt.Sprintf("picture.png"), picture) | |
| if err != nil { | |
| return errors.Wrap(err, "uploading file to telegram") | |
| } | |
| document := message.UploadedDocument(file, | |
| html.String(nil, `Upload: <b>From bot</b>`), | |
| ) | |
| document. | |
| MIME("image/jpeg"). | |
| Filename(fmt.Sprintf("picture.png")) | |
| uploadedShit, err := sender.Self().UploadMedia(ctx, document) | |
| if err != nil { | |
| return errors.Wrap(err, "uploading media") | |
| } | |
| var media tg.MessageMediaDocument | |
| switch v := uploadedShit.(type) { | |
| case *tg.MessageMediaDocument: // messageMediaDocument#4cf4d72d | |
| media = *v | |
| default: | |
| return errors.Wrap(err, "unexpected media type") | |
| } | |
| var doc tg.Document | |
| switch v := media.Document.(type) { | |
| case *tg.Document: // document#8fd4c4d8 | |
| doc = *v | |
| default: | |
| return errors.Wrap(err, "unexpected document type") | |
| } | |
| location := tg.InputDocumentFileLocation{ | |
| ID: doc.ID, | |
| AccessHash: doc.AccessHash, | |
| FileReference: doc.FileReference, | |
| ThumbSize: "", | |
| } | |
| _, err = sender.Self().Album(ctx.Context, message.Document(&location)) | |
| if err != nil { | |
| return errors.Wrap(err, "sending document") | |
| } | |
| return err | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment