Module: Twitter::REST::DirectMessages

Includes:
UploadUtils, Utils, Utils
Included in:
API
Defined in:
lib/twitter/rest/direct_messages.rb,
lib/twitter/rest/direct_messages/welcome_messages.rb

Overview

Methods for interacting with direct messages

Defined Under Namespace

Modules: WelcomeMessages

Constant Summary

Constants included from Utils

Utils::DEFAULT_CURSOR

Instance Method Summary collapse

Methods included from Utils

flat_pmap, pmap

Instance Method Details

#create_direct_message(user_id, text, options = {}) ⇒ Twitter::DirectMessage Also known as: d, m, dm

Sends a new direct message to the specified user

Examples:

client.create_direct_message(123456789, "Hello!")

Parameters:

  • user_id (Integer)

    A Twitter user ID

  • text (String)

    The text of the message (up to 10,000 characters)

  • options (Hash) (defaults to: {})

    A customizable set of options

Returns:

Raises:

See Also:



197
198
199
200
# File 'lib/twitter/rest/direct_messages.rb', line 197

def create_direct_message(user_id, text, options = {})
  event = perform_request_with_object(:json_post, "/1.1/direct_messages/events/new.json", format_json_options(user_id, text, options), DirectMessageEvent)
  event.direct_message
end

#create_direct_message_event(user, text, options = {}) ⇒ Twitter::DirectMessageEvent

Note:

This method requires an access token with RWD permissions

Creates a new direct message event to the specified user

Examples:

client.create_direct_message_event(123456789, "Hello!")

Parameters:

  • user (Integer, String, Twitter::User)

    A Twitter user ID, screen name, URI, or object.

  • text (String)

    The text of the message (up to 10,000 characters).

  • options (Hash) (defaults to: {})

    A customizable set of options.

Returns:

Raises:

See Also:



241
242
243
244
245
246
247
# File 'lib/twitter/rest/direct_messages.rb', line 241

def create_direct_message_event(*args)
  arguments = Arguments.new(args)
  options = arguments.options
  options[:event] = {type: "message_create", message_create: {target: {recipient_id: extract_id(arguments.fetch(0))}, message_data: {text: arguments.fetch(1)}}} if arguments.length == 2
  response = Request.new(self, :json_post, "/1.1/direct_messages/events/new.json", options).perform
  DirectMessageEvent.new(response)
end

#create_direct_message_event_with_media(user, text, media, options = {}) ⇒ Twitter::DirectMessageEvent

Note:

This method requires an access token with RWD permissions

Creates a direct message event with media attachment

Examples:

client.create_direct_message_event_with_media(123, "Hi!", File.new("image.png"))

Parameters:

  • user (Integer, String, Twitter::User)

    A Twitter user ID, screen name, URI, or object

  • text (String)

    The text of the message (up to 10,000 characters)

  • media (File)

    A media file (PNG, JPEG, GIF or MP4)

  • options (Hash) (defaults to: {})

    A customizable set of options

Returns:

Raises:

See Also:



265
266
267
268
269
270
# File 'lib/twitter/rest/direct_messages.rb', line 265

def create_direct_message_event_with_media(user, text, media, options = {})
  media_id = upload(media, media_category_prefix: "dm").fetch(:media_id) # steep:ignore NoMethod
  options[:event] = {type: "message_create", message_create: {target: {recipient_id: extract_id(user)}, message_data: {text:, attachment: {type: "media", media: {id: media_id}}}}}
  response = Request.new(self, :json_post, "/1.1/direct_messages/events/new.json", options).perform
  DirectMessageEvent.new(response)
end

#destroy_direct_message(*ids) ⇒ nil

Note:

This method requires an access token with RWD permissions

Destroys direct messages

Examples:

client.destroy_direct_message(123456789)

Parameters:

  • ids (Enumerable<Integer>)

    A collection of direct message IDs

Returns:

  • (nil)

    Response body from Twitter is nil if successful

Raises:

See Also:



177
178
179
180
181
182
# File 'lib/twitter/rest/direct_messages.rb', line 177

def destroy_direct_message(*ids)
  pmap(ids) do |id|
    perform_requests(:delete, "/1.1/direct_messages/events/destroy.json", id:) # steep:ignore ArgumentTypeMismatch
  end
  nil
end

#direct_message(id, options = {}) ⇒ Twitter::DirectMessage

Note:

This method requires an access token with RWD permissions

Returns a direct message

Examples:

client.direct_message(123456789)

Parameters:

  • id (Integer)

    A direct message ID

  • options (Hash) (defaults to: {})

    A customizable set of options

Returns:

Raises:

See Also:



106
107
108
# File 'lib/twitter/rest/direct_messages.rb', line 106

def direct_message(id, options = {})
  direct_message_event(id, options).direct_message
end

#direct_message_event(id, options = {}) ⇒ Twitter::DirectMessageEvent

Note:

This method requires an access token with RWD permissions

Returns a direct message event

Examples:

client.direct_message_event(123456789)

Parameters:

  • id (Integer)

    A direct message ID

  • options (Hash) (defaults to: {})

    A customizable set of options

Returns:

Raises:

See Also:



123
124
125
126
# File 'lib/twitter/rest/direct_messages.rb', line 123

def direct_message_event(id, options = {})
  options[:id] = id
  perform_get_with_object("/1.1/direct_messages/events/show.json", options, DirectMessageEvent)
end

#direct_messages(options = {}) ⇒ Array<Twitter::DirectMessage> #direct_messages(*ids) ⇒ Array<Twitter::DirectMessage> #direct_messages(*ids, options) ⇒ Array<Twitter::DirectMessage>

Note:

This method requires an access token with RWD permissions

Returns direct messages

Examples:

client.direct_messages

Overloads:

Returns:

Raises:



153
154
155
156
157
158
159
160
161
162
# File 'lib/twitter/rest/direct_messages.rb', line 153

def direct_messages(*args)
  arguments = Arguments.new(args)
  if arguments.empty?
    direct_messages_received(arguments.options)
  else
    pmap(arguments) do |id|
      direct_message(id, arguments.options)
    end
  end
end

#direct_messages_events(options = {}) ⇒ Array<Twitter::DirectMessageEvent>

Note:

This method requires an access token with RWD permissions

Returns all Direct Message events for the authenticated user

Examples:

client.direct_messages_events

Parameters:

  • options (Hash) (defaults to: {})

    A customizable set of options

Options Hash (options):

  • :count (Integer)

    Number of records to retrieve (max 50)

  • :cursor (String)

    Cursor position of results

Returns:

Raises:

See Also:



31
32
33
34
35
# File 'lib/twitter/rest/direct_messages.rb', line 31

def direct_messages_events(options = {})
  limit = options.fetch(:count, 20)
  request_options = options.merge(no_default_cursor: true, count: 50, limit:)
  perform_get_with_cursor("/1.1/direct_messages/events/list.json", request_options, :events, DirectMessageEvent)
end

#direct_messages_list(options = {}) ⇒ Array<Twitter::DirectMessage>

Note:

This method requires an access token with RWD permissions

Returns all Direct Messages for the authenticated user

Examples:

client.direct_messages_list

Parameters:

  • options (Hash) (defaults to: {})

    A customizable set of options

Options Hash (options):

  • :count (Integer)

    Number of records to retrieve (max 50)

  • :cursor (String)

    Cursor position of results

Returns:

Raises:

See Also:



51
52
53
# File 'lib/twitter/rest/direct_messages.rb', line 51

def direct_messages_list(options = {})
  direct_messages_events(options).collect(&:direct_message)
end

#direct_messages_received(options = {}) ⇒ Array<Twitter::DirectMessage>

Note:

This method requires an access token with RWD permissions

Returns Direct Messages received by the authenticated user

Examples:

client.direct_messages_received

Parameters:

  • options (Hash) (defaults to: {})

    A customizable set of options

Options Hash (options):

  • :count (Integer)

    Number of records to retrieve (max 50)

  • :cursor (String)

    Cursor position of results

Returns:

Raises:

See Also:



69
70
71
72
# File 'lib/twitter/rest/direct_messages.rb', line 69

def direct_messages_received(options = {})
  limit = options.fetch(:count, 20)
  direct_messages_list(options).select { |dm| dm.recipient_id == user_id }.first(limit)
end

#direct_messages_sent(options = {}) ⇒ Array<Twitter::DirectMessage>

Note:

This method requires an access token with RWD permissions

Returns Direct Messages sent by the authenticated user

Examples:

client.direct_messages_sent

Parameters:

  • options (Hash) (defaults to: {})

    A customizable set of options

Options Hash (options):

  • :count (Integer)

    Number of records to retrieve (max 50)

  • :cursor (String)

    Cursor position of results

Returns:

Raises:

See Also:



88
89
90
91
# File 'lib/twitter/rest/direct_messages.rb', line 88

def direct_messages_sent(options = {})
  limit = options.fetch(:count, 20)
  direct_messages_list(options).select { |dm| dm.sender_id == user_id }.first(limit)
end