Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

how to web hook create bot pls example file path and certificate #273

Open
abduraimovdev opened this issue Jul 11, 2024 · 5 comments
Open
Assignees
Labels
enhancement New feature or request

Comments

@abduraimovdev
Copy link

how to web hook create bot pls example file path and certificate

@abduraimovdev abduraimovdev added the enhancement New feature or request label Jul 11, 2024
@HeySreelal
Copy link
Contributor

Hey, I've checked the example file, and I think that's a bit outdated.

Here's an example that I just tested and found to be working fine:

import 'dart:io';
import 'package:teledart/teledart.dart';
import 'package:teledart/telegram.dart';

void main() async {
  final token = Platform.environment["BOT_TOKEN"]!;
  final telegram = Telegram(token);
  final username = (await telegram.getMe()).username!;

  final server = await HttpServer.bind(InternetAddress.anyIPv4, 8081);

  final webhook = Webhook(
    telegram,
    "https://yourwebhook-url.com",
    server,
  );

  final bot = TeleDart(
    token,
    Event(username),
    fetcher: webhook,
  );

  bot.onCommand("start").listen((message) {
    message.reply("Hello!");
  });

  bot.start();
}

If you have a self-signed certificate you can pass the File object to the certificate parameter - it's optional. Check the setWebhook documentation for more info. Anyway, the above code is working just fine.

Let me know if you have any further concerns.

@DinoLeung
Copy link
Owner

Thanks @HeySreelal for always being the first person to help in the community. I'm working on an update for a while which will include an updated version of the example file but I've not been able to finish it still.
@abduraimovdev please consult the official faq for the webhook configuration https://core.telegram.org/bots/faq#i-39m-having-problems-with-webhooks

@paulobreim
Copy link

In my Bots the code I use is the one below.

What is this webhook? When is it used?

void main() async {
   late TeleDart teledart;
   const token = mytoken;


  final username = (await Telegram(token).getMe()).username;
  teledart = TeleDart(token, Event(username!));
  print('$username ready to work.');
  teledart.start();

  teledart.onMessage(entityType: 'bot_command').listen((message) async {
    checkmessage(message);  // there answer everything
  });

}

@HeySreelal
Copy link
Contributor

Hi @paulobreim, Telegram supports two ways in which you can listen updates. First one is the LongPolling which is used by default if you don't pass a fetcher. So from your code, I can say that your bots are using the LongPolling way to fetch updates.

  • LongPolling is basically repeatedly calling the getUpdates method and checking if there are updates left to handle.

  • Meanwhile, Webhook is basically a server endpoint that you leave opened - let's say something like an API endpoint. Whenever there's an update to your bot Telegram Bot API server automatically sends a POST request containing the JSON serialized Update object in the body. You can read more about it on setWebhook documentation.


Some side notes are, generally speaking (from my understanding) webhooks are preferred for a bot with large user base. Because, an update is immediately sent to your endpoint right after it is occurred also as they are concurrently processed.

Hope this helps :)

@paulobreim
Copy link

Glad to know that. I didn't know that Telegram had a webhook, I imagine it must be very useful in a payment system, which we still don't have in Brazil.

tks
paulo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants