Telegram 我如何发送&;以编程方式接收电报消息?

Telegram 我如何发送&;以编程方式接收电报消息?,telegram,Telegram,我想创建一个应用程序,通过电话号码和/或电报id向不同的人发送电报消息 我听说过“电报机器人API”,但据我所知,它有一些局限性(例如,除非用户授权并向其发送第一条消息,否则它无法发送消息,并且它不支持使用电话号码发送消息) 还有“电报API”,看起来需要大量的工作和编码。。?我是一名单人开发者,我不想花费数年时间从头开始创建一个电报应用程序,该应用程序可以与电报服务器通信并执行所有协议,然后我必须不断更新它,等等 我只想要一些易于编码和维护的东西,并且可以使用我的电报帐户以编程方式发送/接收消

我想创建一个应用程序,通过电话号码和/或电报id向不同的人发送电报消息

我听说过“电报机器人API”,但据我所知,它有一些局限性(例如,除非用户授权并向其发送第一条消息,否则它无法发送消息,并且它不支持使用电话号码发送消息)

还有“电报API”,看起来需要大量的工作和编码。。?我是一名单人开发者,我不想花费数年时间从头开始创建一个电报应用程序,该应用程序可以与电报服务器通信并执行所有协议,然后我必须不断更新它,等等

我只想要一些易于编码和维护的东西,并且可以使用我的电报帐户以编程方式发送/接收消息。就这样。比如:

send.message(phone number, message)
或者某种RESTAPI,让我验证我的电报帐户,然后提供我可以用来向联系人发送消息的方法


关于如何实现这一点,有什么想法吗?任何提示都将不胜感激

看看MTProto库,比如或。它们是用户友好的(有很多帮助函数来抽象原始电报api调用,它们的接口有点类似于电报机器人api)

下面是一个示例代码(来自telethon文档):


事实上,telegram为其机器人提供了一个功能强大但非常简单的API,这是一项相当不错的工作(注意:您也可以使用电报应用程序,如或发送消息,这与使用Bot API不同。这些应用程序类似于您的移动/桌面应用程序,使用具有特定身份验证电话号码的真实帐户,您可以用您的手机应用程序执行任何操作。但这是另一种情况故事)

对于使用机器人发送消息,您可以找到所有文档。要使用这些API,您需要:

  • 使用机器人父亲机器人创建一个机器人:他将帮助你创建一个机器人,并最终给你一些秘密令牌,你应该使用你的机器人
  • 一些用户应该“/启动”您的机器人。启动机器人或用户的任何通信后,您有两个不同的选项:(i)您可以使用或(ii)通过轮询电报服务器的更新来读取更新设置a:通过这种方式,telegram将调用该webhook,让您了解该消息。无论采用哪种方式,要将消息发送到一个帐户,您都需要该用户的所谓“chat_id”(您应该使用上述方法之一获得该信息)
  • 最后一步是发送消息:对于最简单的情况,您希望向具有特定聊天id的人发送简单消息。您只需调用此URL(即API):

通过这种调用REST api的方式,您可以调用许多函数,这只是第一步,您可以做更复杂、更有趣的事情!对于许多语言,有一些api包可以让开发人员将一切都变得简单和抽象。可以找到最流行的包的列表。

感谢您的解释但是机器人解决方案的问题是,它需要用户首先与之交互,而且它不允许通过电话号码向联系人发送消息。如果你不介意的话,我有几个问题?如果我使用MTProto库,我不需要阅读每个文档页并实现电报已经拥有或做过的每一件事吗?如果不是nd所有内容都已经由库所有者实现,我不需要不断更新应用程序(比如每隔几个小时、每天或每次更新出来)吗?我只需要一个简单的解决方案,让我使用电话号码(帐户)进行身份验证然后让我用一个简单的方法来发送消息。我希望我能表达我的担忧和我的目标。如果这有误导性的话,很抱歉。为了解决您的担忧,我提到的两个库都有一系列直观(抽象整个协议)且非常稳定的帮助器方法(即使在电报更新时也要维护它们的接口)。是的,您可以使用它们创建一个脚本,只需验证一个帐户并发送消息,然后退出,而无需让脚本一直运行以侦听更新。(我刚才共享的代码片段正是这样做的)关于这些文档,你只需要阅读几页关于如何使用这些方法的内容,因为你不需要知道使用它们的底层协议。我很高兴它成功了,我不知道你在使用PHP。实际上有一个类似的、同样伟大的库,叫做MadelineProto()。如果你用它来代替,这是有意义的。它很容易调用
yield$MadelineProto->messages->sendMessage(['peer'=>'@username','message'=>“…”)
也可以在那里发送消息。这应该可以避免在python代码和项目之间实现不必要的桥接所带来的麻烦。而且据我所知,madelineproto是稳定的,甚至是通过电报确认的。是的,限制并不是真正已知的(没有公布)这取决于很多因素,但通常建议在每个API调用之间有一些间隔(如
sleep
)。
from telethon import TelegramClient

# Remember to use your own values from my.telegram.org!
api_id = 12345
api_hash = '0123456789abcdef0123456789abcdef'

client = TelegramClient('anon', api_id, api_hash)

async def main():
    # You can send messages to yourself...
    await client.send_message('me', 'Hello, myself!')
    # ...to some chat ID
    await client.send_message(-100123456, 'Hello, group!')
    # ...to your contacts
    await client.send_message('+34600123123', 'Hello, friend!')
    # ...or even to any username
    await client.send_message('TelethonChat', 'Hello, Telethon!')

with client:
    client.loop.run_until_complete(main())
https://api.telegram.org/bot{BOTTOKEN}/sendMessage?chat_id={CHAT_ID}&text={SOME_TEXT}