peppelg / madelineproto
PHP 实现的 Telegram 的 MTProto 协议。
4.1.1
2019-06-27 09:27 UTC
Requires
- php: >=7.1.0
- ext-fileinfo: *
- ext-json: *
- ext-mbstring: *
- ext-xml: *
- amphp/amp: ^2.0
- amphp/artax: dev-master as 3.0.99
- amphp/byte-stream: ^1.6
- amphp/dns: dev-master#aa1892bdf13b787d759df6f2523e8027a434d927 as v0.9.x-dev
- amphp/file: ^0.3
- amphp/socket: ^0.10
- amphp/uri: ^0.1.4
- amphp/websocket: dev-master as 1
- amphp/websocket-client: dev-master as 1
- danog/dns-over-https: ^0.1
- danog/magicalserializer: ^1.0
- danog/primemodule: ^1
- erusev/parsedown: ^1.7
- phpseclib/phpseclib: dev-master#5e7d39153270dfd19d585504b0a29ac65a62adf9 as 2.0.15
- vlucas/phpdotenv: ^3
Requires (Dev)
- ennexa/amp-update-cache: dev-master
- phpdocumentor/reflection-docblock: ^3.1
- phpunit/phpunit: ^8
Suggests
- ext-libtgvoip: Install the php-libtgvoip extension to make phone calls (https://github.com/danog/php-libtgvoip)
Conflicts
README
由 Daniil Gentili 创建
请加入官方频道,@MadelineProto 和 支持群组!
这是什么?
这个库可以用来轻松与 Telegram 交互,无需 机器人 API,就像官方应用一样。
它可以通过手机号码(MTProto API)或机器人令牌(MTProto API,不涉及机器人 API!)进行登录。
入门指南(现在完全异步!)
<?php if (!file_exists('madeline.php')) { copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); } include 'madeline.php'; $MadelineProto = new \danog\MadelineProto\API('session.madeline'); $MadelineProto->async(true); $MadelineProto->loop(function () use ($MadelineProto) { yield $MadelineProto->start(); $me = yield $MadelineProto->get_self(); $MadelineProto->logger($me); if (!$me['bot']) { yield $MadelineProto->messages->sendMessage(['peer' => '@danogentili', 'message' => "Hi!\nThanks for creating MadelineProto! <3"]); yield $MadelineProto->channels->joinChannel(['channel' => '@MadelineProto']); try { yield $MadelineProto->messages->importChatInvite(['hash' => 'https://t.me/joinchat/Bgrajz6K-aJKu0IpGsLpBg']); } catch (\danog\MadelineProto\RPCErrorException $e) { $MadelineProto->logger($e); } yield $MadelineProto->messages->sendMessage(['peer' => 'https://t.me/joinchat/Bgrajz6K-aJKu0IpGsLpBg', 'message' => 'Testing MadelineProto!']); } yield $MadelineProto->echo('OK, done!'); });
现在尝试这段代码! 或在浏览器或控制台中运行此代码。
提示:如果您收到错误(或没有东西),发送给我们 错误消息和在相同目录中创建的 MadelineProto.log
文件(如果从浏览器运行)。
文档
- 异步
- 创建客户端
- 登录
- 功能
- 要求
- 安装
- 处理更新(新消息)
- 设置
- 获取当前用户的信息
- 异常
- 避免 FLOOD_WAITs
- 日志记录
- Telegram VoIP 电话
- 上传和下载文件
- 获取关于聊天信息
- 获取所有聊天(对话框)
- 行内按钮 (现在完全异步!)(https://docs.madelineproto.xyz/docs/INLINE_BUTTONS.html)
- 秘密聊天
- Lua 绑定
- 使用代理
- 使用方法
- 带有描述的完整 API 文档
- 登出
- 登录
- 更改两步验证密码
- 获取所有聊天,向所有聊天广播消息
- 获取频道/群组/超组的完整参与者列表
- 获取用户/聊天/超组/频道的完整信息
- 获取用户/聊天/超组/频道的详细信息
- 获取当前登录用户的详细信息
- 上传或下载高达 1.5 GB 的文件
- 打电话并播放歌曲
- 创建秘密聊天机器人
- 接受 URL 授权:messages.acceptUrlAuth
- 接受联系人:contacts.acceptContact
- 接受 Telegram Passport 授权:account.acceptAuthorization
- 接受 Telegram 的 TOS:help.acceptTermsOfService
- 添加表情包:messages.installStickerSet
- 将表情添加到收藏:messages.faveSticker
- 将表情添加到最近使用表情:messages.saveRecentSticker
- 将用户添加到普通聊天(使用 channels->inviteToChannel 对超组):messages.addChatUser
- 添加联系人:contacts.addContact
- 将电话号码添加为联系人:contacts.importContacts
- 将表情添加到表情包:stickers.addStickerToSet
- 将用户添加到频道/超组:channels.inviteToChannel
- 阻止用户:contacts.block
- 仅机器人:获取 Telegram Passport 授权表单:account.getAuthorizationForm
- 仅机器人:发送支付表单:payments.sendPaymentForm
- 仅机器人:设置预结账结果:messages.setBotPrecheckoutResults
- 仅机器人:设置发货结果:messages.setBotShippingResults
- 仅机器人:设置回调答案(按钮点击后):messages.setBotCallbackAnswer
- 仅机器人:设置内联查询的结果:messages.setInlineBotResults
- 调用内联机器人:messages.getInlineBotResults
- 取消密码恢复电子邮件:account.cancelPasswordEmail
- 更改通知设置:account.updateNotifySettings
- 更改照片中表情的位置:stickers.changeStickerPosition
- 更改与此账户关联的电话号码:account.changePhone
- 更改电话号码:account.sendChangePhoneCode
- 更改个人资料照片:photos.updateProfilePhoto
- 更改输入状态:messages.setTyping
- 检查是否即将编辑消息或媒体标题:messages.getMessageEditData
- 检查邀请链接是否有效:messages.checkChatInvite
- 检查此用户名是否可用:account.checkUsername
- 检查此用户名是否空闲并可分配给频道/超组:channels.checkUsername
- 清除所有草稿:messages.clearAllDrafts
- 清除所有最近使用表情:messages.clearRecentStickers
- 清除已保存的支付信息:payments.clearSavedInfo
- 使用电子邮件确认密码恢复:account.confirmPasswordEmail
- 确认此电话号码与此账户关联,从 sendConfirmPhoneCode 获取 phone_code_hash:account.confirmPhone
- 联系人注册通知设置值:account.getContactSignUpNotification
- 将聊天转换为超组:messages.migrateChat
- 创建聊天(不是超组):messages.createChat
- 创建频道/超组:channels.createChannel
- 创建表情包:stickers.createStickerSet
- 删除特定会话:account.resetAuthorization
- 删除特定的 Telegram 网页登录授权:account.resetWebAuthorization
- 删除频道/超组:channels.deleteChannel
- 从聊天中删除用户(不是超组):messages.deleteChatUser
- 删除所有登录会话:auth.resetAuthorizations
- 删除频道/超组中用户的全部消息:channels.deleteUserHistory
- 删除除提供的以外的所有临时授权密钥:auth.dropTempAuthKeys
- 删除频道/超组消息:channels.deleteMessages
- 删除聊天历史:messages.deleteHistory
- 通过电话删除联系人:contacts.deleteByPhones
- 删除文件夹:folders.deleteFolder
- 删除消息:messages.deleteMessages
- 删除多个联系人:contacts.deleteContacts
- 删除个人资料照片:photos.deletePhotos
- 删除安全电报护照值:account.deleteSecureValue
- 删除超级群/频道的聊天记录:channels.deleteHistory
- 删除此账户:account.deleteAccount
- 在一定时期内禁用所有通知:account.updateDeviceLocked
- 通过电报下载文件:upload.getWebFile
- 编辑消息:messages.editMessage
- 编辑已发送的嵌入式消息:messages.editInlineBotMessage
- 编辑频道/超级群中用户的管理员权限:channels.editAdmin
- 编辑聊天管理员权限:messages.editChatAdmin
- 编辑聊天信息:messages.editChatAbout
- 编辑频道的创建者:channels.editCreator
- 编辑聊天的默认权限:messages.editChatDefaultBannedRights
- 编辑文件夹:folders.editPeerFolders
- 编辑地理位置(地理聊天):channels.editLocation
- 编辑普通聊天(非超级群)的图片:messages.editChatPhoto
- 编辑超级群/频道的图片:channels.editPhoto
- 编辑普通聊天(非超级群)的标题:messages.editChatTitle
- 编辑超级群/频道的标题:channels.editTitle
- 编辑用户信息:help.editUserInfo
- 启用或禁用新频道/超级群用户的隐藏历史记录:channels.togglePreHistoryHidden
- 导出聊天邀请:messages.exportChatInvite
- 查找贴纸包:messages.searchStickerSets
- 完成账户导出会话:account.finishTakeoutSession
- 转发消息:messages.forwardMessages
- 获取CDN配置:help.getCdnConfig
- 获取贴纸包:messages.getStickerSet
- 获取账户TTL:account.getAccountTTL
- 获取频道/超级群管理员日志:channels.getAdminLog
- 获取所有存档贴纸:messages.getArchivedStickers
- 获取所有已离开的频道:channels.getLeftChannels
- 获取所有聊天(非超级群或频道):messages.getAllChats
- 获取所有联系人:contacts.getContacts
- 获取所有登录授权:account.getAuthorizations
- 获取所有消息草稿:messages.getAllDrafts
- 获取所有安全电报护照值:account.getAllSecureValues
- 获取所有贴纸包:messages.getAllStickers
- 获取所有你是管理员的超级群/频道:channels.getAdminedPublicChannels
- 获取并增加消息查看数:messages.getMessagesViews
- 获取应用配置:help.getAppConfig
- 获取自动下载设置:account.getAutoDownloadSettings
- 获取可用语言:langpack.getLanguages
- 获取被屏蔽的用户:contacts.getBlocked
- 获取通话配置:phone.getCallConfig
- 获取频道/超级群的聊天记录:channels.getMessages
- 获取频道/超级群的参与者(应使用
$MadelineProto->get_pwr_chat($id)
代替):channels.getParticipants - 获取与用户共有的聊天:messages.getCommonChats
- 通过ID获取联系人:contacts.getContactIDs
- 获取深链接信息:help.getDeepLinkInfo
- 获取同伴的对话信息:messages.getPeerDialogs
- 获取手动标记为未读的对话:messages.getDialogUnreadMarks
- 通过SHA256哈希获取文档:messages.getDocumentByHash
- 获取表情URL:messages.getEmojiURL
- 获取表情关键词差异:messages.getEmojiKeywordsDifference
- 获取表情关键词语言:messages.getEmojiKeywordsLanguages
- 获取表情关键词:messages.getEmojiKeywords
- 获取收藏贴纸:messages.getFavedStickers
- 获取特色贴纸:messages.getFeaturedStickers
- 获取讨论组:channels.getGroupsForDiscussion
- 获取嵌入式消息中游戏的得分:messages.getInlineGameHighScores
- 获取游戏的得分:messages.getGameHighScores
- 获取特定频道/超级群参与者的信息:channels.getParticipant
- 获取应用更新信息:help.getAppUpdate
- 获取聊天信息:messages.getChats
- 获取多个频道/超级群的信息:channels.getChannels
- 获取用户信息:users.getUsers
- 获取支持用户信息:help.getSupport
- 获取当前代理信息:help.getProxyData
- 获取邀请文本:help.getInviteText
- 获取语言包字符串:langpack.getStrings
- 获取语言包更新:langpack.getDifference
- 获取语言包:langpack.getLangPack
- 获取语言:langpack.getLanguage
- 获取面具贴纸:messages.getMaskStickers
- 获取要获取的消息范围:messages.getSplitRanges
- 获取消息:messages.getMessages
- 获取最常用聊天:contacts.getTopPeers
- 获取最近的数据中心:help.getNearestDc
- 获取通知例外:account.getNotifyExceptions
- 获取通知设置:account.getNotifySettings
- 获取所有用户的在线状态:contacts.getStatuses
- 获取在线用户:messages.getOnlines
- 获取护照配置:help.getPassportConfig
- 获取支付表单:payments.getPaymentForm
- 获取支付收据:payments.getPaymentReceipt
- 获取附近的人(地理聊天):contacts.getLocated
- 获取置顶对话:messages.getPinnedDialogs
- 获取投票结果:messages.getPollResults
- 获取群组的前置消息:messages.getHistory
- 获取隐私设置:account.getPrivacy
- 获取最近的位置:messages.getRecentLocations
- 获取最近的贴纸:messages.getRecentStickers
- 获取最近的 t.me 网址:help.getRecentMeUrls
- 获取保存的联系人:contacts.getSaved
- 获取保存的 Gif:messages.getSavedGifs
- 获取保存的支付信息:payments.getSavedInfo
- 获取搜索计数器:messages.getSearchCounters
- 获取 Telegram Passport 的安全值:account.getSecureValue
- 获取服务器配置:help.getConfig
- 获取统计 URL:messages.getStatsURL
- 获取可附加到图像的贴纸:messages.getAttachedStickers
- 获取贴纸:messages.getStickers
- 获取支持名称:help.getSupportName
- 获取 Telegram Web 登录授权:account.getWebAuthorizations
- 获取通过机器人购买产品的临时密码:account.getTmpPassword
- 获取机器人的回调响应(点击按钮后):messages.getBotCallbackAnswer
- 获取此应用的更改日志:help.getAppChangelog
- 获取当前密码:account.getPassword
- 获取频道中消息的链接:channels.exportMessageLink
- 获取用户的个人照片:photos.getUserPhotos
- 获取 peer 的设置:messages.getPeerSettings
- 获取未读提及:messages.getUnreadMentions
- 获取更新的 TOS:help.getTermsOfServiceUpdate
- 获取用户信息:help.getUserInfo
- 获取壁纸信息:account.getWallPaper
- 获取网页预览:messages.getWebPage
- 获取网页预览:messages.getWebPagePreview
- 获取聊天列表:你应该使用 $MadelineProto->get_dialogs() 代替:https://docs.madelineproto.xyz/docs/DIALOGS.html:messages.getDialogs
- 全局消息搜索:messages.searchGlobal
- 隐藏 peer 设置栏:messages.hidePeerSettingsBar
- 导入聊天邀请:messages.importChatInvite
- 初始化连接并在用户的设备和应用程序上保存信息:initConnection
- 安装壁纸:account.installWallPaper
- 无效化已发送的手机验证码:auth.cancelCode
- 从 takeout 会话中调用方法:invokeWithTakeout
- 以层 X 调用此方法:invokeWithLayer
- 使用消息范围调用此方法:invokeWithMessagesRange
- 在不返回套接字更新的情况下使用方法调用:invokeWithoutUpdates
- 在成功完成之前的查询之一后调用查询:invokeAfterMsg
- 加入频道/超级群组:channels.joinChannel
- 从频道/超级群组中踢出或禁用用户:channels.editBanned
- 离开频道/超级群组:channels.leaveChannel
- 为此应用的开发者记录数据:help.saveAppLog
- 将频道/超级群组的历史记录标记为已读:channels.readHistory
- 将频道/超级群组的消息标记为已读:channels.readMessageContents
- 将对话标记为未读:messages.markDialogUnread
- 将提及标记为已读:messages.readMentions
- 将消息标记为已读:messages.readMessageContents
- 在秘密聊天中将消息标记为已读:messages.readEncryptedHistory
- 将消息标记为已读:messages.readHistory
- 将消息标记为已读:messages.receivedMessages
- 将新特色贴纸标记为已读:messages.readFeaturedStickers
- 通知服务器您已接收到电话(服务器将在当前电话结束后拒绝所有传入的电话):phone.receivedCall
- 固定或取消固定对话:messages.toggleDialogPin
- 注册设备以接收推送通知:account.registerDevice
- 删除贴纸集:messages.uninstallStickerSet
- 从贴纸集中删除贴纸:stickers.removeStickerFromSet
- 重新排列置顶对话:messages.reorderPinnedDialogs
- 重新排列贴纸集:messages.reorderStickerSets
- 向超级群组/频道报告消息为垃圾邮件:channels.reportSpam
- 报告消息:messages.report
- 举报垃圾邮件:messages.reportSpam
- 举报垃圾邮件的私密聊天:messages.reportEncryptedSpam
- 举报垃圾邮件:account.reportPeer
- 请求URL授权:messages.requestUrlAuth
- 重新发送密码恢复邮件:account.resendPasswordEmail
- 重新发送短信验证码:auth.resendCode
- 重置所有通知设置:account.resetNotifySettings
- 重置所有Telegram网页登录授权:account.resetWebAuthorizations
- 重置已保存的联系人:contacts.resetSaved
- 重置特定类别/联系人的顶级评分:contacts.resetTopPeerRating
- 重置壁纸:account.resetWallPapers
- 当前查询返回的结果类型:invokeAfterMsgs
- 返回可用壁纸的列表:account.getWallPapers
- 保存GIF:messages.saveGif
- 保存消息草稿:messages.saveDraft
- 保存自动下载设置:account.saveAutoDownloadSettings
- 保存电话调试信息:phone.saveCallDebug
- 保存Telegram护照的安全值:account.saveSecureValue
- 保存壁纸:account.saveWallPaper
- 搜索联系人:contacts.search
- 搜索GIF:messages.searchGifs
- 搜索联系人或消息:messages.search
- 向机器人API发送自定义请求:bots.sendCustomRequest
- 向私密聊天发送文件:messages.sendEncryptedFile
- 发送媒体:messages.sendMedia
- 发送消息:messages.sendMessage
- 向私密聊天发送服务消息:messages.sendEncryptedService
- 发送相册:messages.sendMultiMedia
- 发送用于恢复2FA密码的电子邮件:auth.requestPasswordRecovery
- 发送确认手机代码:account.sendConfirmPhoneCode
- 发送电子邮件验证码:account.sendVerifyEmailCode
- 将使用messages.getInlineBotResults获取的机器人结果发送到聊天:messages.sendInlineBotResult
- 向私密聊天发送消息:messages.sendEncrypted
- 发送电话验证码:account.sendVerifyPhoneCode
- 发送截图通知:messages.sendScreenshotNotification
- 向私密聊天发送打字通知:messages.setEncryptedTyping
- 发送投票:messages.sendVote
- 通过机器人API发送webhook请求:bots.answerWebhookJSONQuery
- 设置账户TTL:account.setAccountTTL
- 设置联系人注册通知:account.setContactSignUpNotification
- 设置频道的讨论组:channels.setDiscussionGroup
- 设置电话通话评分:phone.setCallRating
- 设置隐私设置:account.setPrivacy
- 设置Telegram护照的安全值错误:users.setSecureValueErrors
- 设置内联消息的游戏分数:messages.setInlineGameScore
- 设置游戏分数:messages.setGameScore
- 设置超级群/频道的贴纸包:channels.setStickers
- 设置webhook的更新状态:help.setBotUpdatesStatus
- 启动机器人:messages.startBot
- 启动账户导出会话:account.initTakeoutSession
- 停止向应用发送PUSH通知:account.unregisterDevice
- 切换频道签名:channels.toggleSignatures
- 切换慢速模式:channels.toggleSlowMode
- 切换顶级联系人:contacts.toggleTopPeers
- 取消阻止用户:contacts.unblock
- 更新在线状态:account.updateStatus
- 更新置顶消息:messages.updatePinnedMessage
- 更新个人资料信息:account.updateProfile
- 更新超级群/频道的用户名:channels.updateUsername
- 更新此用户的用户名:account.updateUsername
- 上传文件而不发送给任何人:messages.uploadMedia
- 上传私密聊天文件而不发送给任何人:messages.uploadEncryptedFile
- 上传个人照片:photos.uploadProfilePhoto
- 上传壁纸:account.uploadWallPaper
- 使用运行$MadelineProto->auth->requestPasswordRecovery后通过电子邮件发送的代码登录您的账户:auth.recoverPassword
- 验证请求的支付信息:payments.validateRequestedInfo
- 验证电子邮件地址:account.verifyEmail
- 验证电话号码:account.verifyPhone
- 联系人
- 文件
- 秘密聊天
- 实体(Markdown & HTML)
- reply_markup(键盘和内联键盘)
- 机器人API对象
- 无结果
- 队列
- 多次方法调用
- 带有描述的完整 API 文档
- 贡献
- MadelineProto 的
$MadelineProto->start()
函数的 Web 模板
非常复杂且完整的示例
您可以在以下链接中找到几乎所有 MadelineProto 函数的示例:
tests/testing.php
- 包括拨打电话/接收电话、创建/接收秘密聊天、发送秘密聊天消息、视频、音频、语音记录、GIF、贴纸、照片、发送普通消息、视频、音频、语音记录、GIF、贴纸、照片的示例。bot.php
- 发送普通消息、下载任何媒体的示例secret_bot.php
- 秘密聊天机器人magna.php
- 接收电话的示例userbots/pipesbot.php
- 创建内联机器人并通过用户机器人使用其他内联机器人的示例userbots/MadelineProto_bot.php
- 多功能机器人userbots/pwrtelegram_debug_bot
- 多功能机器人