2015-06-26 43 views
36

Tôi có thể biết chat_id trong api bot điện tín là gì không? Các tài liệu nói:Cách lấy Telegram chat_id cho một người dùng cụ thể?

"Integer | nhận dạng độc đáo cho người nhận tin nhắn - Người sử dụng hoặc id trò chuyện nhóm"

tôi không thể tìm thấy bất kỳ mô tả về điều đó. Làm thế nào tôi có thể lấy nó cho một người dùng hoặc một nhóm?

+1

Tôi vừa nhận thấy thực hiện một số thử nghiệm cho trò chuyện riêng tư ** chat_id ** và ** from_user.id ** là như nhau. Giả sử đây là một quy tắc (tôi đã không tìm thấy một số tài liệu tham khảo), nếu bạn tìm ra user_id của mình (có thể từ Update trong một nhóm), bạn sẽ trò chuyện riêng với anh ta. Ai đó có thể bác bỏ điều này? – Thomas8

Trả lời

23

Nội dung cập nhật thư bạn nhận được qua getUpdates hoặc webhook của bạn sẽ chứa ID trò chuyện cho thư cụ thể. Nó sẽ được chứa dưới khóa message.chat.id.

Điều này có vẻ giống như cách duy nhất bạn có thể truy xuất ID trò chuyện. Vì vậy, nếu bạn muốn viết một cái gì đó mà bot bắt đầu cuộc trò chuyện, bạn có thể sẽ phải lưu trữ ID trò chuyện liên quan đến người dùng trong một số loại key-> giá trị lưu trữ như MemCache hoặc Redis.

Tôi tin rằng tài liệu của họ gợi ý điều gì đó tương tự ở đây, https://core.telegram.org/bots#deep-linking-example. Bạn có thể sử dụng liên kết sâu liên kết sâu để bắt đầu cuộc trò chuyện mà không yêu cầu người dùng nhập một tin nhắn trước tiên.

+0

Có, tôi đồng ý. Bot có thể lưu trữ dữ liệu người dùng và ID trong bộ nhớ liên tục, để khởi tạo thành công "cuộc trò chuyện" không được yêu cầu. BTW, Theo như tôi biết chat_ID là duy nhất. –

+0

Được đề cập dưới liên kết sâu: 'Hiển thị cho người dùng của chúng tôi nút https://telegram.me/ExampleComBot?start=vCH1vGWJxfSeofSAs0K5PA' Cách hiển thị nút? – kb0000

+0

Liên kết sâu chỉ cần thiết nếu bạn phải liên kết người dùng Telegram với người dùng trang web/dịch vụ của bạn (trong cơ sở dữ liệu của bạn). Nếu bạn chỉ muốn người dùng cho phép bot biết rằng anh ta tồn tại và muốn nhận được thứ gì đó từ bot, một liên kết telegram.me/TheBot tiêu chuẩn sẽ ổn. @ kb0000 là một liên kết, bạn có thể quyết định vị trí và cách bạn muốn hiển thị nó cho người dùng –

5

Sử dụng API Perl bạn có thể nhận nó theo cách này: đầu tiên bạn gửi một thông điệp tới các bot từ Telegram, sau đó đưa ra một getUpdates và trò chuyện id phải có mặt ở đó:

#!/usr/bin/perl 

use Data::Dumper; 
use WWW::Telegram::BotAPI; 

my $TOKEN = 'blablabla'; 
my $api = WWW::Telegram::BotAPI->new (
    token => $TOKEN 
) or die "I can't connect"; 

my $out = $api->api_request ('getUpdates'); 
warn Dumper($out); 
my $chat_id = $out->{result}->[0]->{message}->{chat}->{id}; 
print "chat_id=$chat_id\n"; 

id phải ở trong chat_id nhưng nó có thể phụ thuộc vào kết quả, vì vậy tôi cũng đã thêm một kết xuất của toàn bộ kết quả.

Bạn có thể cài đặt API Perl từ https://github.com/Robertof/perl-www-telegram-botapi. Nó phụ thuộc vào hệ thống của bạn nhưng tôi đã cài đặt một cách dễ dàng chạy trên máy chủ Linux của tôi:

$ sudo cpan WWW::Telegram::BotAPI 

Hope this helps

7

Bạn chỉ có thể chia sẻ những xúc với bot của bạn và, qua/getUpdates, bạn sẽ có được "tiếp xúc "đối tượng

22

Tôi đã tạo bot để có được Id người dùng hoặc GroupChat, chỉ cần gửi /my_id đến bot điện báo @get_id_bot.

Nó không chỉ hoạt động đối với ID trò chuyện của người dùng, mà còn hoạt động đối với ID trò chuyện nhóm.

Để nhận ID trò chuyện nhóm, trước tiên bạn phải thêm bot vào nhóm, sau đó gửi /my_id trong nhóm.

Here là liên kết tới bot.

+3

Bạn cũng có thể chia sẻ địa chỉ liên hệ qua điện tín của mình với @get_id_bot để tiết lộ chat_id của họ –

+0

Thật tuyệt vời, cảm ơn, nhưng sau đó nó vẫn gửi spam cho tôi, làm cách nào để dừng lại? –

+1

@fmalaussena: xin lỗi vì điều đó, tôi đã sửa nó, ... cảm ơn –

Các vấn đề liên quan