tg-bot 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: e53651b5c70ea474b1d3c4f78b0d61f4804920e8e95dc358bce05458d7a0ed89
4
+ data.tar.gz: fddc2b181891004919d204d946aeeb90429d063f1d114b58e0c5a72c06e74cd5
5
+ SHA512:
6
+ metadata.gz: 7f533d40ed12195bfbed207e784b1ad62abc249f38f43063cefac4360a0f63a47dec7427676018fb5b123ce536ebc88a1266c50b43d6712cdf38f5facf165e88
7
+ data.tar.gz: 58b3b2a60a2c189e228afe44bbdc0f37b3054185f7f368be493d3e564ed819f17d2409c22b5513ee431b4d78a4dcdc169aa2e7449966fa7f26d05cf915295a94
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ coverage/*
6
+ .DS_Store
@@ -0,0 +1,21 @@
1
+ require 'telegram_bot/params/shared/chat_component'
2
+
3
+ module Telegram
4
+ module Params
5
+ class Chat < ChatComponent
6
+ def initialize(params)
7
+ message = params.require(:message)
8
+ @params = message[:chat]
9
+ # If from exist then return nil
10
+ return nil if @params.blank?
11
+
12
+ chat_params = message.require(:chat)
13
+ super(chat_params)
14
+ end
15
+
16
+ def nil?
17
+ super || @params.nil?
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require 'telegram_bot/params/shared/chat_component'
2
+
3
+ module Telegram
4
+ module Params
5
+ class ForwardChat < ChatComponent
6
+ def initialize(params)
7
+ message = params.require(:message)
8
+ @params = message[:forward_from_chat]
9
+ # If from exist then return nil
10
+ return nil if @params.blank?
11
+
12
+ forward_from_params = message.require(:forward_from_chat)
13
+ super(forward_from_params)
14
+ end
15
+
16
+ def nil?
17
+ super || @params.nil?
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require 'telegram_bot/params/shared/user_component'
2
+
3
+ module Telegram
4
+ module Params
5
+ class ForwardFrom < UserComponent
6
+ def initialize(params)
7
+ message = params.require(:message)
8
+ @params = message[:forward_from]
9
+ # If from exist then return nil
10
+ return nil if @params.blank?
11
+
12
+ forward_from_params = message.require(:forward_from)
13
+ super(forward_from_params)
14
+ end
15
+
16
+ def nil?
17
+ super || @params.nil?
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require 'telegram_bot/params/shared/user_component'
2
+
3
+ module Telegram
4
+ module Params
5
+ class From < UserComponent
6
+ def initialize(params)
7
+ message = params.require(:message)
8
+ @params = message[:from]
9
+ # If from exist then return nil
10
+ return nil if @params.blank?
11
+
12
+ from_params = message.require(:from)
13
+ super(from_params)
14
+ end
15
+
16
+ def nil?
17
+ super || @params.nil?
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,125 @@
1
+ require 'telegram_bot/params'
2
+
3
+ module Telegram
4
+ module Params
5
+ class Message
6
+ attr_reader :params, :message_id, :from, :date, :chat, :forward_from, :forward_from_chat,
7
+ :forward_from_message_id, :forward_signature, :forward_date, :reply_to_message,
8
+ :edit_date, :media_group_id, :author_signature, :text, :entities, :caption_entities,
9
+ :audio, :document, :animation, :game, :photo, :sticker, :video, :voice, :video_note,
10
+ :caption, :contact, :location, :venue, :new_chat_members, :left_chat_member,
11
+ :new_chat_title, :new_chat_photo, :delete_chat_photo, :group_chat_created,
12
+ :supergroup_chat_created, :channel_chat_created, :migrate_to_chat_id,
13
+ :migrate_from_chat_id, :pinned_message, :invoice, :successful_payment,
14
+ :connected_website, :passport_data
15
+
16
+ def initialize(params)
17
+ message_params = message_params_permit_from(params)
18
+
19
+ @params = params.require(:message)
20
+ @message_id = message_params[:message_id]
21
+ @from = Telegram::Params::From.new(params)
22
+ @date = message_params[:date]
23
+ @chat = Telegram::Params::Chat.new(params)
24
+ @forward_from = Telegram::Params::ForwardFrom.new(params)
25
+ @forward_from_chat = Telegram::Params::ForwardChat.new(params)
26
+ @forward_from_message_id = message_params[:forward_from_message_id]
27
+ @forward_signature = message_params[:forward_signature]
28
+ @forward_date = message_params[:forward_date]
29
+ @reply_to_message = message_params[:reply_to_message]
30
+ @edit_date = message_params[:edit_date]
31
+ @media_group_id = message_params[:media_group_id]
32
+ @author_signature = message_params[:author_signature]
33
+ @text = message_params[:text]
34
+ @entities = message_params[:entities]
35
+ @caption_entities = message_params[:caption_entities]
36
+ @audio = message_params[:audio]
37
+ @document = message_params[:document]
38
+ @animation = message_params[:animation]
39
+ @game = message_params[:game]
40
+ @photo = message_params[:photo]
41
+ @sticker = message_params[:sticker]
42
+ @video = message_params[:video]
43
+ @voice = message_params[:voice]
44
+ @video_note = message_params[:video_note]
45
+ @caption = message_params[:caption]
46
+ @contact = message_params[:contact]
47
+ @location = message_params[:location]
48
+ @venue = message_params[:venue]
49
+ @new_chat_members = message_params[:new_chat_members]
50
+ @left_chat_member = message_params[:left_chat_member]
51
+ @new_chat_title = message_params[:new_chat_title]
52
+ @new_chat_photo = message_params[:new_chat_photo]
53
+ @delete_chat_photo = message_params[:delete_chat_photo]
54
+ @group_chat_created = message_params[:group_chat_created]
55
+ @supergroup_chat_created = message_params[:supergroup_chat_created]
56
+ @channel_chat_created = message_params[:channel_chat_created]
57
+ @migrate_to_chat_id = message_params[:migrate_to_chat_id]
58
+ @migrate_from_chat_id = message_params[:migrate_from_chat_id]
59
+ @pinned_message = message_params[:pinned_message]
60
+ @invoice = message_params[:invoice]
61
+ @successful_payment = message_params[:successful_payment]
62
+ @connected_website = message_params[:connected_website]
63
+ @passport_data = message_params[:passport_data]
64
+ end
65
+
66
+ def nil?
67
+ self.instance_variables.map{ |attribute| self.instance_variable_get(attribute) }
68
+ .map(&:nil?)
69
+ .reduce(:&)
70
+ end
71
+
72
+ private
73
+
74
+ def message_params_permit_from(params)
75
+ params.require(:message)
76
+ .permit(
77
+ :message_id,
78
+ :from,
79
+ :date,
80
+ :chat,
81
+ :forward_from,
82
+ :forward_from_chat,
83
+ :forward_from_message_id,
84
+ :forward_signature,
85
+ :forward_date,
86
+ :reply_to_message,
87
+ :edit_date,
88
+ :media_group_id,
89
+ :author_signature,
90
+ :text,
91
+ :entities,
92
+ :caption_entities,
93
+ :audio,
94
+ :document,
95
+ :animation,
96
+ :game,
97
+ :photo,
98
+ :sticker,
99
+ :video,
100
+ :voice,
101
+ :video_note,
102
+ :caption,
103
+ :contact,
104
+ :location,
105
+ :venue,
106
+ :new_chat_members,
107
+ :left_chat_member,
108
+ :new_chat_title,
109
+ :new_chat_photo,
110
+ :delete_chat_photo,
111
+ :group_chat_created,
112
+ :supergroup_chat_created,
113
+ :channel_chat_created,
114
+ :migrate_to_chat_id,
115
+ :migrate_from_chat_id,
116
+ :pinned_message,
117
+ :invoice,
118
+ :successful_payment,
119
+ :connected_website,
120
+ :passport_data
121
+ )
122
+ end
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,52 @@
1
+ module Telegram
2
+ module Params
3
+ class ChatComponent
4
+ attr_reader :id, :type, :title, :username, :first_name, :last_name, :all_members_are_administrators, :photo, :description, :invite_link, :pinned_message, :sticker_set_name, :can_set_sticker_set
5
+
6
+ def initialize(params)
7
+ return if params.blank?
8
+ chat_params = chat_params_permit_from(params)
9
+
10
+ @id = chat_params[:id]
11
+ @type = chat_params[:type]
12
+ @title = chat_params[:title]
13
+ @username = chat_params[:username]
14
+ @first_name = chat_params[:first_name]
15
+ @last_name = chat_params[:last_name]
16
+ @all_members_are_administrators = chat_params[:all_members_are_administrators]
17
+ @photo = chat_params[:photo]
18
+ @description = chat_params[:description]
19
+ @invite_link = chat_params[:invite_link]
20
+ @pinned_message = chat_params[:pinned_message]
21
+ @sticker_set_name = chat_params[:sticker_set_name]
22
+ @can_set_sticker_set = chat_params[:can_set_sticker_set]
23
+ end
24
+
25
+ def nil?
26
+ self.instance_variables.map{ |attribute| self.instance_variable_get(attribute) }
27
+ .map(&:nil?)
28
+ .reduce(:&)
29
+ end
30
+
31
+ private
32
+
33
+ def chat_params_permit_from(params)
34
+ params.permit(
35
+ :id,
36
+ :type,
37
+ :title,
38
+ :username,
39
+ :first_name,
40
+ :last_name,
41
+ :all_members_are_administrators,
42
+ :photo,
43
+ :description,
44
+ :invite_link,
45
+ :pinned_message,
46
+ :sticker_set_name,
47
+ :can_set_sticker_set
48
+ )
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,38 @@
1
+ module Telegram
2
+ module Params
3
+ class UserComponent
4
+ attr_reader :id, :is_bot, :first_name, :last_name, :username, :language_code, :params
5
+
6
+ def initialize(params)
7
+ return if params.blank?
8
+ user_params = user_params_permit_from(params)
9
+
10
+ @id = user_params[:id]
11
+ @is_bot = user_params[:is_bot]
12
+ @first_name = user_params[:first_name]
13
+ @last_name = user_params[:last_name]
14
+ @username = user_params[:username]
15
+ @language_code = user_params[:language_code]
16
+ end
17
+
18
+ def nil?
19
+ self.instance_variables.map{ |attribute| self.instance_variable_get(attribute) }
20
+ .map(&:nil?)
21
+ .reduce(:&)
22
+ end
23
+
24
+ private
25
+
26
+ def user_params_permit_from(params)
27
+ params.permit(
28
+ :id,
29
+ :is_bot,
30
+ :first_name,
31
+ :last_name,
32
+ :username,
33
+ :language_code
34
+ )
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,5 @@
1
+ require 'telegram_bot/params/chat'
2
+ require 'telegram_bot/params/forward_chat'
3
+ require 'telegram_bot/params/forward_from'
4
+ require 'telegram_bot/params/from'
5
+ require 'telegram_bot/params/message'
@@ -0,0 +1,3 @@
1
+ require 'telegram_bot/reply/send_message'
2
+ require 'telegram_bot/reply/forward_message'
3
+ require 'telegram_bot/reply/send_photo'
@@ -0,0 +1,19 @@
1
+ require 'telegram_bot/url'
2
+ require 'telegram_bot/reply/request'
3
+
4
+ module Telegram
5
+ module Reply
6
+
7
+ def forward_message(chat_id: @chat.id, from_chat_id:, message_id:, **options)
8
+ url = Telegram::URL::FORWARD_MESSAGE
9
+ params = {
10
+ chat_id: chat_id,
11
+ from_chat_id: from_chat_id,
12
+ message_id: message_id,
13
+ disable_notification: options[:disable_notification].presence
14
+ }
15
+
16
+ Telegram::Reply::SEND(url: url, params: params)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,12 @@
1
+ require 'net/http'
2
+
3
+ module Telegram
4
+ module Reply
5
+
6
+ def self.SEND(url:, params:)
7
+ uri = URI(url)
8
+ uri.query = URI.encode_www_form(params)
9
+ ::Net::HTTP.get_response(uri)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,22 @@
1
+ require 'telegram_bot/url'
2
+ require 'telegram_bot/reply/request'
3
+
4
+ module Telegram
5
+ module Reply
6
+
7
+ def send_message(chat_id: @chat.id, text:, parse_mode: 'html', **options)
8
+ url = Telegram::URL::SEND_MESSAGE
9
+ params = {
10
+ chat_id: chat_id,
11
+ text: text,
12
+ parse_mode: parse_mode,
13
+ disable_web_page_preview: options[:disable_web_page_preview].presence,
14
+ disable_notification: options[:disable_notification].presence,
15
+ reply_to_message_id: options[:reply_to_message_id].presence,
16
+ reply_markup: options[:reply_markup].presence
17
+ }
18
+
19
+ Telegram::Reply::SEND(url: url, params: params)
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ require 'telegram_bot/url'
2
+ require 'telegram_bot/reply/request'
3
+
4
+ module Telegram
5
+ module Reply
6
+
7
+ def send_photo(chat_id: @chat.id, photo:, **options)
8
+ url = Telegram::URL::SEND_PHOTO
9
+ params = {
10
+ chat_id: chat_id,
11
+ photo: photo,
12
+ caption: options[:caption].presence,
13
+ parse_mode: options[:parse_mode].presence,
14
+ disable_notification: options[:disable_notification].presence,
15
+ reply_to_message_id: options[:reply_to_message_id].presence,
16
+ reply_markup: options[:reply_markup].presence
17
+ }
18
+
19
+ Telegram::Reply::SEND(url: url, params: params)
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,8 @@
1
+ module Telegram
2
+ module URL
3
+ BASE_URL = "https://api.telegram.org/bot#{ENV['telegram_bot_token']}".freeze
4
+ SEND_MESSAGE = "#{BASE_URL}/sendMessage".freeze
5
+ FORWARD_MESSAGE = "#{BASE_URL}/forwardMessage".freeze
6
+ SEND_PHOTO = "#{BASE_URL}/sendPhoto".freeze
7
+ end
8
+ end
@@ -0,0 +1,5 @@
1
+ module Telegram
2
+ module Bot
3
+ VERSION = '0.0.1'
4
+ end
5
+ end
@@ -0,0 +1,31 @@
1
+ require 'net/http'
2
+ require 'telegram_bot/replies'
3
+ require 'telegram_bot/params'
4
+
5
+ module Telegram
6
+ class Bot
7
+ include Telegram::Reply
8
+
9
+ attr_reader :user, :forward_from, :chat, :forward_from_chat, :message
10
+
11
+ def initialize(params)
12
+ # User
13
+ @user = Telegram::Params::From.new(params)
14
+ @forward_from = Telegram::Params::ForwardFrom.new(params)
15
+
16
+ # Chat
17
+ @chat = Telegram::Params::Chat.new(params)
18
+ @forward_from_chat = Telegram::Params::ForwardChat.new(params)
19
+
20
+ # Message
21
+ @message = Telegram::Params::Message.new(params)
22
+ end
23
+
24
+ class << self
25
+ def setWebhook(url)
26
+ uri = URI("https://api.telegram.org/bot#{ENV['telegram_bot_token']}/setWebhook?url=#{url}")
27
+ Net::HTTP.get(uri)
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,18 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "telegram_bot/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'tg-bot'
7
+ s.version = Telegram::Bot::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.date = '2019-02-28'
10
+ s.summary = "Test for telegram bot api!"
11
+ s.description = "A simple telegram bot gem"
12
+ s.authors = ["Vense Chang"]
13
+ s.email = 'vense1023@gmail.com'
14
+ s.files = `git ls-files`.split("\n")
15
+ s.require_paths = ["lib"]
16
+ s.homepage = 'https://github.com/VenseChang/telegram-bot-gem.git'
17
+ s.license = 'MIT'
18
+ end
metadata ADDED
@@ -0,0 +1,61 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tg-bot
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Vense Chang
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-02-28 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple telegram bot gem
14
+ email: vense1023@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - ".gitignore"
20
+ - lib/telegram_bot.rb
21
+ - lib/telegram_bot/params.rb
22
+ - lib/telegram_bot/params/chat.rb
23
+ - lib/telegram_bot/params/forward_chat.rb
24
+ - lib/telegram_bot/params/forward_from.rb
25
+ - lib/telegram_bot/params/from.rb
26
+ - lib/telegram_bot/params/message.rb
27
+ - lib/telegram_bot/params/shared/chat_component.rb
28
+ - lib/telegram_bot/params/shared/user_component.rb
29
+ - lib/telegram_bot/replies.rb
30
+ - lib/telegram_bot/reply/forward_message.rb
31
+ - lib/telegram_bot/reply/request.rb
32
+ - lib/telegram_bot/reply/send_message.rb
33
+ - lib/telegram_bot/reply/send_photo.rb
34
+ - lib/telegram_bot/url.rb
35
+ - lib/telegram_bot/version.rb
36
+ - telegram_bot.gemspec
37
+ homepage: https://github.com/VenseChang/telegram-bot-gem.git
38
+ licenses:
39
+ - MIT
40
+ metadata: {}
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ requirements: []
56
+ rubyforge_project:
57
+ rubygems_version: 2.7.8
58
+ signing_key:
59
+ specification_version: 4
60
+ summary: Test for telegram bot api!
61
+ test_files: []