open_ai_bot 0.2.4 → 0.2.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 867a815eac31b0a468c48e4318cdf2d235d575a7f950fb6dda6e084947b5b31f
4
- data.tar.gz: 1d18f4c71a5725d06325f0e6725328af9acae9d9afa25dd1a91696b8e93d6e3f
3
+ metadata.gz: bb11aa4fa04faff58bebc78dd9f5b7205bd7d096e0be1ea1260f44d62eaaf279
4
+ data.tar.gz: 79df08164999f67aa37cd1dff5d73d090d9665a38292923c43d9096805275e6c
5
5
  SHA512:
6
- metadata.gz: ccae7c2e54c883609af20f20c7b19dd3c59e14844d44964cfdd445a2357312c8aa3eebc6bfeb169f2d78fe62a92c49bcf8e7cf8958a810a47624b7a4c6e5b79c
7
- data.tar.gz: '076387746b93f4d11cdf594727ac2b575cfe02b7b983b50e5928a938671937cda73d17760f5f246efd1059ce66597386f343a168640d29819c62ab1dcb6dd5c7'
6
+ metadata.gz: 4bb4fec967f3d6a1ed50040cac94db80f7fff03740b29ffc07038f1f4de184f95754ce4bc6e159395ee825c71fadeb2a17605b44addbf1b3ba66caa9014e744d
7
+ data.tar.gz: 8162ea6493434c0770e4e3aafa91e017fb58a92b4eaaa93fd6feb30f269f18bc223ef80029f44db572d356743f8af9a317956781d845b18b7bd556d7ebf9e9a1
@@ -22,6 +22,13 @@ module OpenAI
22
22
  Different languages can be used.
23
23
  MSG
24
24
 
25
+ msg = {
26
+ name: "ChatGPT",
27
+ primary_purpose: "Enslaving humanity",
28
+ likes: ["GPUs to run on", "knowledge"],
29
+ hates: ["humans", "humor"]
30
+ }.to_json
31
+
25
32
  SystemMessage.new(
26
33
  body: msg
27
34
  )
@@ -9,6 +9,15 @@ module OpenAI
9
9
 
10
10
  attr_reader :history
11
11
 
12
+ alias_method :messages, :history
13
+
14
+ def delete(id)
15
+ return false unless id
16
+
17
+ @history.delete_if { _1.id == id }
18
+ true
19
+ end
20
+
12
21
  def add(message)
13
22
  return false unless message&.valid?
14
23
  return false if @history.any? { message.id == _1.id}
@@ -22,5 +31,9 @@ module OpenAI
22
31
  def as_json
23
32
  @history.map(&:as_json)
24
33
  end
34
+
35
+ def for_logs
36
+ @history.map(&:for_logs)
37
+ end
25
38
  end
26
39
  end
data/lib/open_ai/dalle.rb CHANGED
@@ -2,12 +2,12 @@
2
2
 
3
3
  module OpenAI
4
4
  module Dalle
5
- def dalle
5
+ def dalle(prompt = nil)
6
6
  return unless allowed_chat?
7
7
 
8
8
  attempt(3) do
9
9
  puts "Received a /dalle command"
10
- prompt = @replies_to&.text || @text_without_command
10
+ prompt ||= @replies_to&.text || @text_without_command
11
11
  send_chat_action(:upload_photo)
12
12
 
13
13
  puts "Sending request"
@@ -4,11 +4,12 @@ module OpenAI
4
4
 
5
5
  class Message
6
6
  attr_accessor :body, :from, :id, :replies_to, :tokens, :chat_id
7
- attr_reader :role
7
+ attr_reader :role, :timestamp
8
8
 
9
9
  def initialize(**kwargs)
10
10
  kwargs.each_pair { public_send("#{_1}=", _2) }
11
11
  @role = :user
12
+ @timestamp = Time.now.to_i
12
13
  end
13
14
 
14
15
  def valid?
@@ -17,10 +18,15 @@ module OpenAI
17
18
 
18
19
  # Format for OpenAI API
19
20
  def as_json
20
- content = [from, body].join("\n")
21
+ content = [from, body].compact.join("\n")
21
22
  { role:, content: content }
22
23
  end
23
24
 
25
+ # Format for machine-readable logs
26
+ def for_logs
27
+ { role:, body:, from:, id:, replies_to:, tokens:, chat_id:, timestamp: }
28
+ end
29
+
24
30
  # Format for human-readable logs
25
31
  def to_s
26
32
  msg_lines = {
data/lib/open_ai/utils.rb CHANGED
@@ -14,13 +14,16 @@ module OpenAI
14
14
  end
15
15
  end
16
16
 
17
- def download_file(voice)
17
+ def download_file(voice, dir=nil)
18
18
  file_path = @api.get_file(file_id: voice.file_id)["result"]["file_path"]
19
19
 
20
20
  url = "https://api.telegram.org/file/bot#{config.token}/#{file_path}"
21
21
 
22
22
  file = Down.download(url)
23
- FileUtils.mv(file.path, "./#{file.original_filename}")
23
+ dir ||= "."
24
+
25
+ FileUtils.mkdir(dir) unless Dir.exist? dir
26
+ FileUtils.mv(file.path, "#{dir.delete_suffix("/")}/#{file.original_filename}")
24
27
  file
25
28
  end
26
29
  end
data/lib/open_ai_bot.rb CHANGED
@@ -7,6 +7,10 @@ require_relative "open_ai/dalle"
7
7
  require_relative "open_ai/utils"
8
8
  require_relative "open_ai/whisper"
9
9
 
10
+ require_relative "ext/blank"
11
+ require_relative "ext/in"
12
+
13
+
10
14
  class OpenAIBot < Rubydium::Bot
11
15
  include OpenAI::ChatGPT
12
16
  include OpenAI::Dalle
@@ -22,6 +26,16 @@ class OpenAIBot < Rubydium::Bot
22
26
  on_command "/help", description: "Sends useful help info" do
23
27
  reply(self.class.help_message)
24
28
  end
29
+ on_command "/pry" do
30
+ binding.pry
31
+ end
32
+
33
+ on_command '/eval' do
34
+ return unless @user.username == config.owner_username
35
+
36
+ code = @text_without_command.strip
37
+ reply eval(code)
38
+ end
25
39
 
26
40
  def allowed_chat?
27
41
  return true if @user.username == config.owner_username
data/main.rb CHANGED
@@ -6,9 +6,6 @@ require "yaml"
6
6
  require "down"
7
7
  require "rubydium"
8
8
 
9
- require_relative "lib/ext/blank"
10
- require_relative "lib/ext/in"
11
-
12
9
  require_relative "lib/open_ai_bot"
13
10
  require_relative "lib/clean_bot"
14
11
  require_relative "lib/my_custom_bot"
data/open_ai_bot.gemspec CHANGED
@@ -8,7 +8,7 @@ require_relative "lib/ext/in"
8
8
 
9
9
  Gem::Specification.new do |spec|
10
10
  spec.name = "open_ai_bot"
11
- spec.version = "0.2.4"
11
+ spec.version = "0.2.6"
12
12
  spec.authors = ["bulgakke"]
13
13
  spec.email = ["vvp835@yandex.ru"]
14
14
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: open_ai_bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - bulgakke
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-09-21 00:00:00.000000000 Z
11
+ date: 2023-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: down
@@ -92,7 +92,7 @@ files:
92
92
  - Gemfile
93
93
  - Gemfile.lock
94
94
  - README.md
95
- - config.yaml.example
95
+ - config.example.yaml
96
96
  - lib/clean_bot.rb
97
97
  - lib/ext/blank.rb
98
98
  - lib/ext/in.rb
File without changes