[][src]Struct irc_async::proto::message::Message

pub struct Message {
    pub tags: Option<Vec<Tag>>,
    pub prefix: Option<String>,
    pub command: Command,
}

A data structure representing an IRC message according to the protocol specification. It consists of a collection of IRCv3 tags, a prefix (describing the source of the message), and the protocol command. If the command is unknown, it is treated as a special raw command that consists of a collection of arguments and the special suffix argument. Otherwise, the command is parsed into a more useful form as described in Command.

Fields

tags: Option<Vec<Tag>>

Message tags as defined by IRCv3.2. These tags are used to add extended information to the given message, and are commonly used in IRCv3 extensions to the IRC protocol.

prefix: Option<String>

The message prefix (or source) as defined by RFC 2812.

command: Command

The IRC command, parsed according to the known specifications. The command itself and its arguments (including the special suffix argument) are captured in this component.

Methods

impl Message[src]

pub fn new(
    prefix: Option<&str>,
    command: &str,
    args: Vec<&str>,
    suffix: Option<&str>
) -> Result<Message, MessageParseError>
[src]

Creates a new message from the given components.

Example

let message = Message::new(
    Some("nickname!username@hostname"), "JOIN", vec!["#channel"], None
).unwrap();

pub fn with_tags(
    tags: Option<Vec<Tag>>,
    prefix: Option<&str>,
    command: &str,
    args: Vec<&str>,
    suffix: Option<&str>
) -> Result<Message, MessageParseError>
[src]

Creates a new IRCv3.2 message from the given components, including message tags. These tags are used to add extended information to the given message, and are commonly used in IRCv3 extensions to the IRC protocol.

pub fn source_nickname(&self) -> Option<&str>[src]

Gets the nickname of the message source, if it exists.

Example

let message = Message::new(
    Some("nickname!username@hostname"), "JOIN", vec!["#channel"], None
).unwrap();
assert_eq!(message.source_nickname(), Some("nickname"));

pub fn response_target(&self) -> Option<&str>[src]

Gets the likely intended place to respond to this message. If the type of the message is a PRIVMSG or NOTICE and the message is sent to a channel, the result will be that channel. In all other cases, this will call source_nickname.

Example

let msg1 = Message::new(
    Some("ada"), "PRIVMSG", vec!["#channel"], Some("Hi, everyone!")
).unwrap();
assert_eq!(msg1.response_target(), Some("#channel"));
let msg2 = Message::new(
    Some("ada"), "PRIVMSG", vec!["betsy"], Some("betsy: hi")
).unwrap();
assert_eq!(msg2.response_target(), Some("ada"));

pub fn as_string(&self) -> String[src]

Converts a Message into a String according to the IRC protocol.

Example

let msg = Message::new(
    Some("ada"), "PRIVMSG", vec!["#channel"], Some("Hi, everyone!")
).unwrap();
assert_eq!(msg.as_string(), ":ada PRIVMSG #channel :Hi, everyone!\r\n");

Trait Implementations

impl From<Command> for Message[src]

impl<'a> From<&'a str> for Message[src]

impl Clone for Message[src]

impl PartialEq<Message> for Message[src]

impl Debug for Message[src]

impl Display for Message[src]

impl FromStr for Message[src]

type Err = IrcError

The associated error which can be returned from parsing.

impl StructuralPartialEq for Message[src]

Auto Trait Implementations

impl Send for Message

impl Sync for Message

impl Unpin for Message

impl UnwindSafe for Message

impl RefUnwindSafe for Message

Blanket Implementations

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = !

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]